<div dir="ltr"><div>Ben</div>
<div> </div>
<div>As I see it, RabbitMQ is best used for routing messages with minimal or no processing.</div>
<div>You might compare it to Nginx that can modify URLs and http headers but you don't want to put your application logic there.</div>
<div> </div>
<div>AMQP with RabbitMQ can provide the basic features of XMPP.</div>
<div>An app server or a RabbitMQ plugin is needed to handles some logic and db integration.</div>
<div>Presence:</div>
<div>------------------</div>
<div>- Each user have a fanout exchange.</div>
<div>- Each online user has bindings to fanout exchanges of users in his roster.</div>
<div>- When a user changes his presence he publishes it to his exchange.</div>
<div>One To One:</div>
<div>------------------</div>
<div>- Each user has a queue named as his jid.</div>
<div>- Messages published to the direct exchange with the user jid.</div>
<div>- You can name the queue with unguessable string if you want them to be private.</div>
<div>Muc:</div>
<div>-----------------</div>
<div>- A fanout exchange with bindings to participants queues.</div>
<div> </div>
<div>If you need more advanced XEPs, using AMQP might not be a good idea.</div>
<div>MUC, for example, support affiliations, roles and privileges (owner, moderator, member, guest, room history, nickname...).</div>
<div>The same message might be sent with a different syntax to different users according to their privileges.</div>
<div>When messages need processing and complex ACL you loose the power of AMQP.</div>
<div> </div>
<div>ofir</div>
<div> </div>
<div> </div></div>