I have spawned two processes A, B from a GenServer
Process A waits for three distinct messages and upon arrival of them, it runs a computation and sends the response to B
Consider the two messages as a part of a request and each request has an id
I wanted multiple requests to be queued/executed at the same time, so I changed the state to store the messages per request in a map.
Ex:
%{
"request-1": % { message1: 123 },
"request-4": % { message1: 145, message3: 45 },
"request-6": % { message2: 56, message1: 345 },
}
Once the third message arrives, the entry from the Map is removed and the computation is run.
Lets assume that the requests are HTTP request and the computation is async. I don’t want the requests to wait for the execution of the previous one.
I want to have a pool of GenServers which keep processing these requests. The load balancing should be based on the queue of the processes inside the GenServer.
I’m not sure how to achieve this. Please let me know your thoughts.