Several years ago, I implemented an application specific load balancer where the LB kept two queues. One was free_workers and the other was open_requests . Initially, upon startup, each worker registers itself with the LB and gets added to the free_workers queue. When requests arrive at the LB, the LB checks if there are free workers available. If yes, it dequeues a free worker and dispatches the request to that work…
I think what you actually built is a message queue engine that forwards the data to the consumers, not a load balancer.