[rabbitmq-discuss] AMPQ vs XMPP and RabbitMQ vs ejabberd

Alexis Richardson alexis.richardson at cohesiveft.com
Sun Jun 1 17:48:27 BST 2008


On Sun, Jun 1, 2008 at 5:33 PM, mark peleus <mark.peleus at gmail.com> wrote:
> Alexis
> Thank you for your detailed answer.

Thank you for your interesting and timely question.

> Isn't pubsub implementation in ejabberd + a custom client can address:

Um, yes up to a point.  You *could* do pub-sub over many types of
intermediary tech.   For example Twitter does a form of pubsub in a
way that appears to critically involve a database tier.  The
consquences of that decision are currently a debating point in the

XMPP was not designed to do pubsub, it was designed to broadcast IMs
and presence.  This is why the XEP extensions have been proposed.
Those are new, and implemented in afaik one ejabberd implementation.
For all I know they are implemented really well - to be clear: I
*don't know*.

That said, a useful question to ask is - for which pubsub scenarios,
possibly involving ordering, queues, delivery guarantees, and
availability or reliability guarantees, is AMQP a better tool than

>> AMQP is aimed at Business Messaging which means delivery semantics can
>> be much more specific ("at least once", "exactly once", "publish to
>> these subscribers only", "persist", "be durable")

BTW implementing these semantics in a system that scales and is stable
and manageable, is really not trivial :-)

> Does binary streams have any other advantage over xml other then smaller
> size?

Parsing speed, and embeddability, are similar benefits of binary over XML.

The notion of a *stream* is orthogonal and brings with it the notion
of conversational durability.  There are some similarities between
AMQP and SCTP, and bittorrent, in this regard.

> Is AMQP suitable for streaming video and audio?

Yes we have a demo on the RabbitMQ site.

But to get carrier grade video streaming you'd want AMQP with smaller headers.

> Can AMQP has something like http-bind (BOSH) implemented, letting web
> clients interact with the server.

There is a RabbitMQ client for HTTP and "AJAX" style coding.

We would like more natural HTTP bindings - would you like to help?

> I've read the post about Reactor but didn't understand much.
> Any news about that?

Well, I have cc'd the author...



> Mark
> On Sun, Jun 1, 2008 at 7:17 PM, Alexis Richardson
> <alexis.richardson at cohesiveft.com> wrote:
>> Mark
>> This excellent blog post by Steve Jenson goes some way to addressing
>> your question.
>> http://saladwithsteve.com/2007/08/future-is-messaging.html
>> AMQP is aimed at Business Messaging which means delivery semantics can
>> be much more specific ("at least once", "exactly once", "publish to
>> these subscribers only", "persist", "be durable").  This means that,
>> as Steve points out, the notion of 'presence' is replaced by the more
>> general notion of a subscription.  AMQP's model has routing exchanges
>> and queues which can be composed into pretty much any messaging
>> scenario.  Finally, AMQP is a binary protocol whereas XMPP is XML.
>> All these characteristics make AMQP more fundamental in some sense.
>> Really, it complements XMPP which is good at Instant Messaging.  The
>> great thing about this is that large Instant Messaging infrastructures
>> exist and are used by lots of people.  AMQP will be very good for
>> cases where human-human messaging is only a part of the solution - for
>> example business integration and reactive event monitoring.
>> In terms of license and quality differences between ejabberd and
>> RabbitMQ - well they are both open source.  RabbitMQ is MPL 1.1 and
>> (iirc) ejabberd is GPL.  I think that because AMQP is more general and
>> comprehensive than XMPP, it is arguably more 'extensible', and hence
>> so is RabbitMQ, but you may find it easier to locate XMPP tools as it
>> has been around for longer.  RabbitMQ is a high quality implementation
>> whose users often report happiness with its stability.  That said,
>> ejabberd has been around even longer and its scalability and
>> manageability, is why we chose erlang for RabbitMQ :-)
>> If you wish to choose between ejabberd or RabbitMQ, then ask yourself
>> if you are solving an XMPP type of problem or an AMQP type of problem.
>>  Many solutions could quite happily use both.  For example:
>> http://blog.folknology.com/2008/05/31/reactored-my-packet-based-future-finally-emerges/
>> Cheers,
>> alexis
>> On Sun, Jun 1, 2008 at 4:59 PM, mark peleus <mark.peleus at gmail.com> wrote:
>> > Hi,
>> >
>> > Can anyone please explain the differences between AMPQ and XMPP.
>> > Are both addressing the same problems?
>> >
>> > What are the differences between RabbitMQ and ejabberd?
>> > Both are written in erlang.
>> > Is the only difference is the protocol they support or are there more
>> > differences in quality, extensibility, license...?
>> >
>> > Thanks
>> >
>> > _______________________________________________
>> > rabbitmq-discuss mailing list
>> > rabbitmq-discuss at lists.rabbitmq.com
>> > http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>> >
>> >
>> --
>> Alexis Richardson
>> +44 20 7617 7339 (UK)
>> +44 77 9865 2911 (cell)
>> +1 650 206 2517 (US)

Alexis Richardson
+44 20 7617 7339 (UK)
+44 77 9865 2911 (cell)
+1 650 206 2517 (US)

More information about the rabbitmq-discuss mailing list