RabbitMQ XMPP gateway released
I’m pleased to announce that our XMPP gateway for exposing a RabbitMQ instance to the global XMPP network has been released (documentation, browse or check out code, download snapshot).
Update: Because it depends on a newer release of RabbitMQ than 1.3.0, you will also need to check out the server and codegen code from our public mercurial repositories, or download them as snapshots: server, codegen.

The mod_rabbitmq module implements an ejabberd extension module which gateways AMQP (as implemented by RabbitMQ) to XMPP.
By bridging between the two systems, we benefit from:
- XMPP’s internet-scale addressing and federation
- XMPP’s presence model
- AMQP’s store-and-forward capability
- AMQP’s routing and filtering (using exchanges and bindings)
The current implementation is a very simple mapping between the two systems. Its simplicity keeps the code short, but only exposes a subset of AMQP features to the XMPP network, and vice versa.

tonyg
on 03/07/08 at 5:52 pm
((I accidentally deleted a bunch of comments I didn’t mean to delete today, so I’m having to repost them manually:))
Pedro Melo wrote:
Hi,
great work!
Now that ejabberd supports (version 2.x and up) pluggable back.-end’s to their pubsub stuff, are there any plans to make mod_rabbitmq such a module?
this would allow us to use XEP-0060 (PubSub over XMPP) with RabbitMQ topics.
Thanks,
tonyg
on 03/07/08 at 5:52 pm
((I accidentally deleted a bunch of comments I didn’t mean to delete today, so I’m having to repost them manually:))
Mickaël Rémond wrote:
Hello,
This sounds like a good idea.
If you want to, we would be happy to give you an access to ejabberd-modules svn for your ejabberd module gateway code.
We try to gather as much as possible of the modules developed for ejabberd in this space.
http://svn.process-one.net/ejabberd-modules/
Let me know
–
Mickaël Rémond
http://www.process-one.net/
tonyg
on 03/07/08 at 5:55 pm
@Pedro: That’s an interesting idea. I haven’t yet had a look to see how difficult it might be, but if pubsub and AMQP can be fit together reasonably smoothly, it would definitely be a good idea to do so.
@Mickael: Thanks very much. It’s still pretty experimental, and will probably evolve fairly rapidly. Once it settles down a little, we’d be happy to contribute it to the ejabberd community.
Bryan
on 07/08/08 at 7:54 pm
The repository seems to be down.
tonyg
on 07/08/08 at 10:37 pm
Thanks for the heads-up, Bryan — we’re looking into the problem.
Paul Crowley
on 08/08/08 at 10:35 am
Oops, I broke that while working on something else. Sorry! Fixed now. Bryan - thanks for letting us know.
Glenn Rempe
on 18/01/09 at 9:54 pm
Hi. I am having trouble compiling the RabbitMQ XMPP gateway into ejabberd. I am working from the Mercurial trunk for the gateway code (27:944d554c2827), and the ejabberd trunk (r1823) and RabbitMQ trunk (772:75288d1eae96). Erlang is R12B5 on Ubuntu Intrepid.
Here are the errors I am seeing after I linked the gateway code into the ejabberd src dir and try to re-compile ejabberd:
And here is the full output as well as the tiny script I am using to help me compile:
http://gist.github.com/48765
Can anyone offer any insights? I am not well versed in Erlang so diagnosing the issue is tough for me.
Thanks!
tonyg
on 19/01/09 at 11:39 pm
Hi Glenn — thanks for posting. The mailing-list thread starting here http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-January/003030.html discusses the current problems we’re having getting the XMPP gateway to work. In brief, there’s a mnesia table name clash between RabbitMQ and ejabberd, and we will need to add a unique prefix (e.g. “rabbitmq_”) to all our table names.
tonyg
on 19/01/09 at 11:40 pm
Just to clarify, the XMPP gateway is known to work with RabbitMQ 1.4.x; it will not work with 1.5.x (because of the mnesia table name clash); and it will most likely be fixed again sometime before the release of 1.6.0.