Hi there everyone,<div><br></div><div>I am working on a rabbitmq based messaging system and i was wondering if you could help me out :)</div><div><br></div><div>I was wondering how could i enforce events being processed in the order they are published? </div>
<div><br></div><div>Let me draw the rough setup:</div><div><br></div><div>1. We would have single exchange for the app, publishers dont setup routing they just push into the exchange and disconnect whenever. Multiple publishers can send messages regarding same object (for example a video).<br clear="all">
<div><br></div><div>2. Each type of consumer gets a separate queue and creates 1-n bindings to get copies of messages that match the key into it&#39;s queue. Consumers connect and disconnect but the queue remains in place as messages and queues are persistent.</div>
<div><br></div><div>3. To make it a bit more complex you can have competing consumers consuming from the same queue. For example video encoder would take a lot of time to process so we would have  multiple parallel instances running. </div>
<div><br></div><div>Now, the issue is that i am not clear on what are the guarantees about message ordering, especially around client failures, disconnects etc. Is there some trick to get part of messages in guaranteed order as in ActiveMQ message groups? I would like to have some guarantee that for example all messages regarding a single video would be processed in the order they were published. </div>
<div><br></div><div>I am not sure what would be the best way to deal with it so i ask you for some directions or advice :)</div><div><br></div><div>Sorry for such a lengthy message and thank you very much for help</div><div>
<br></div><div>Artur</div><div><br></div>-- <br>Visit me at:<br><a href="http://artur.ejsmont.org/blog/" target="_blank">http://artur.ejsmont.org/blog/</a><br><br>
</div>