[erlang-questions] Asynchronous calls in gen_server
Wed Nov 9 05:09:48 CET 2011
On Nov 8, 2011, at 9:55 PM, Andrew Berman wrote:
> How does it determine in which order to process those calls?
In the order they are received.
> Does it store the messages somewhere to be processed by the function at a later time?
Messages are regular Erlang messages, they are stored in the gen_server process' message mailbox. There is no special queue that stores these messages (with standard OTP behaviors - I believe third party behaviors such as gen_server2 do have an explicit message queue)
> Does it just reject those calls it doesn't have the bandwidth to process?
No. Messages will accumulate in the mailbox leading to degraded performance. This is a well known failure mode in erlang applications.
> How are async calls different than say using something like RabbitMQ where I could post to a RabbitMQ queue and have some external application process what is in that queue?
Can't really compare the two, they're different concepts, designed for different purposes
> Assuming it does use some sort of queue, is there a way to store messages across restarts or crashes?
Hope this helps
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions