Cloud208 Blog

A Bird's Eye View Of AMQP 1.0

Recently AMQP working group has promoted 1.0 version of its specification to final status. While small tick in version numbers from 0.9 to 1.0 might suggest a small incremental change, nothing could further from the truth. AMQP 1.0 is completely new and fundamentally different protocol than existing 0.x family.

What do I mean by fundamentally different? Well, to begin with, problem domain that 1.0 tries to solve is different. Existing amqp protocols describe messaging brokers, their behavior, how to connect to them, and how to control then (to certain extent). So there were exchanges, exchange types, routing keys, queues etc.

1.0 takes different route. It tries to define protocol that could be used to connect more or less any 2 messaging entities - called nodes in 1.0 terminology, and safely and predictably transfer messages between them. It defines how to achieve various message transfer semantics: "at least once", "at most once" and "exactly once". It also specifies how to resume interrupted transfers if they occur.

But what nodes do with those messages after transfer, well, that is completely up to them, and specification leaves this open. It could be that you are transferring a message to old style AMQP broker with exchanges and queues, and it would do probably same thing as before. It could be that you are sending a message to some JMS system, and effects of that message transfer would be according to the JMS semantics. Or you could be transferring a message to your in house optimized messaging entity, like for instance stock exchange trading system, which would in turn process that message as trading order, match it with other orders, execute, and distribute new price information further down the line.

So one look at this might be that by specifying less (since it does not specify broker behavior at all), 1.0 provides opportunity to apply it in larger number of situations. But keep in mind that at this time, this is still just an opportunity, not something that you can do right away. Someone would need to write JMS gateway (or write trading system that uses 1.0) before that.

I hope that after this 1.0 release, which could also be considered "core specification", AMQP group would get really busy on other specifications layered on top of it, which would deal with standard broker behavior and management of brokers.

Posted by rush at 16 September 2011, 3:12 pm with tags amqp link