<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Nov 8, 2011, at 9:55 PM, Andrew Berman wrote:</div><blockquote type="cite"><ol><li>How does it determine in which order to process those calls?</li></ol></blockquote><div>In the order they are received.</div><blockquote type="cite"><ol start="2"><li>Does it store the messages somewhere to be processed by the function at a later time?</li></ol></blockquote>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)<br><blockquote type="cite"><ol start="3"><li>Does it just reject those calls it doesn't have the bandwidth to process?  </li></ol></blockquote>No. Messages will accumulate in the mailbox leading to degraded performance. This is a well known failure mode in erlang applications.<br><blockquote type="cite"><ol start="4">
<li>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?</li></ol></blockquote>Can't really compare the two, they're different concepts, designed for different purposes</div><div><blockquote type="cite"><ol start="5"><li>Assuming it does use some sort of queue, is there a way to store messages across restarts or crashes?</li></ol></blockquote><div>No</div></div><br><div>Hope this helps</div><div><br></div><div>Mihai</div><div><br></div></body></html>