rabbitmqactivemq-classicmessagingamqp

AMQP 0-9-1 vs 1-0


I am looking for a messaging service that will have to interface some C# applications with some Java applications. I really like RabbitMQ because it seems to have amazing support for both technologies. I see in the RabbitMQ specs that at the moment only AMQP 0-9-1 model is provided.

Is that a show stopper? Should I maybe address to ActiveMQ which provides AMQP 1.0?


Solution

  • Your question is perfectly addressed in the official protocol overview:

    AMQP 1.0

    Despite the name, AMQP 1.0 is a radically different protocol from AMQP 0-9-1 / 0-9 / 0-8, sharing essentially nothing at the wire level. AMQP 1.0 imposes far fewer semantic requirements; it is therefore easier to add support for AMQP 1.0 to existing brokers. The protocol is substantially more complex than AMQP 0-9-1, and there are fewer client implementations.

    RabbitMQ supports AMQP 1.0 via a plugin.

    If your clients all implement AMQP 1.0 and it offers significant advantages to you over 0.9.x and you simply cannot live without it and another broker offers better support for 1.0 than RabbitMQ (whose plugin is "experimental" at the time of writing), then yes, maybe you should look at another broker. Otherwise, I doubt it will make a big practical difference for you, and RabbitMQ is working on adding full 1.0 support it seems, so it may be a viable upgrade path in the future. If you yourself cannot point to concrete evidence why 0.9.x alone is a showstopper, I can't either.