technology from back to front

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.

Gateway in relation to ejabberd and RabbitMQ

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.

Read more here.

by
tonyg
on
01/07/08
  1. ((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,

  2. ((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/

  3. @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.

  4. The repository seems to be down.

  5. Thanks for the heads-up, Bryan — we’re looking into the problem.

  6. Oops, I broke that while working on something else. Sorry! Fixed now. Bryan - thanks for letting us know.

  7. 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!

  8. 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.

  9. 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.

 
 
2000-9 LShift Ltd, 1st Floor Office, Hoxton Point, 6 Rufus Street, London, N1 6PE, UK +44 (0)20 7729 7060