<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 26, 2014 at 1:27 PM, Mysurf Mail <span dir="ltr"><<a href="mailto:stammailbox@gmail.com" target="_blank">stammailbox@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="color:rgb(85,85,85);font-family:Verdana,sans-serif;font-size:13px;line-height:18px">So, if I need to handle messages by their Order, I can only use rabbitMQ with an e</span><font color="#555555" face="Verdana, sans-serif"><span style="line-height:18px">xclusive queue  to each consumer? Is RabbitMQ still considered a good solution for ordered message queuing?</span></font></blockquote>

</div><br>Example: We deliver messages to the queue Q and we have a single subscriber S1.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Message delivery will be made in order to S1. Unless precisely this happens:</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">* S1 rejects a message which puts it back in the end of the queue</div><div class="gmail_extra">* S1 closes the connection while having unacknowledged messages</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">If we add another subscriber S2 to Q, things are more complicated. Messages are processed through the queue in order, but now both S1 and S2 may get messages. There are no guarantee that they are equally fast at processing messages, so depending on what S1 and S2 does, they may overrun each other.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">The consequence is that either you need to have a queue per subscriber and deliver them to these, or you need to model an ordering primitive into your solution. I usually advocate against using timestamps for this since they drift. A better model would be to make messages idempotent.<br>

<br clear="all"><div><br></div>-- <br>J.
</div></div>