In this page, I’ll explain about Advanced Message Queuing Protocol(AMQP).
The Advanced Message Queuing Protocol (AMQP) is an open standard, messaging oriented middleware(MoM), wire-level protocol, which enables interoperability between clients (applications) and brokers messaging servers).
It was defined to enable seamless interoperability between different MoM products/networks. It is designed to help businesses, having heterogeneous MoM implementations within the enterprise, or having acquired the same during mergers, to establish a federate MoM platform easily.
It could also be used for more reliable near real-time asynchronous communication between enterprises
http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol#Implementations is a list of AMQP broker implementation & client implementation in common programming languages
Three major pieces specified in the scope of AMQP are
(1) Networking protocol,
(2) Representation for message envelope data
(3) Semantic of Broker Service
Referring the layers that make up the protocol:
AMQP and SOA
– AMQP completes the picture of an open, pragmatic and message oriented SOA stack, which having JMS alone cannot do.
– HTTP is a synchronous protocol.
– Having a messaging based protocol, make it easier to implement a lot more patterns and WS* standards.
AMQP Assembly and Terminology
Understanding and working with AMQP involves being familiar with its terminology.
Content of data transferred / routed including information such as payload and message attributes. The message attributes are no fixed and need to be agreed between the producer and consumer or at the broker if the attribute value is used in routing
Message acknowledgments are a built-in feature so that the consumers can confirm delivery or processing of the message
Consumer: An application which receives message(s) – put by a producer – from queues.
Producer: An application which put messages to a queue via an exchange
Broker (Server): An application implementing the AMQP Model, which defines how messages are received, routed, stored, queued and how application parts handling these tasks should work
Exchange: A part of the broker (i.e. server) which receives messages and routes them to queues.
Direct Exchange type involves the delivery of messages to queues based on routing keys
Fanout Exchange ignores the routing key & sends message to all the queues bound to it.
Topic Exchange is mainly used for pub/sub (publish-subscribe) patterns.
Headers Exchange constitutes of using additional headers/message attributes.
Queue (message queue)
A named entity which messages are associated with and from where Consumers receive them. Queues can be defined as named, durable, exclusive or auto-delete. Some brokers support additional types through, ‘arguments’.
Bindings: Rules for distributing messages from exchanges to queues.
Channels are lightweight connection that uses the same multiplexed TCP/IP connection. Each thread/process may open a new channel. The communication through a channel is separate even though the TCP/IP connection is shared.
Plug-ins is the way of extending the broker functionality in terms of protocol interoperability, security enforcement, management tools, etc.
There seems to some disagreement on the future of AMQP by the vendors or in implementation of the latest specifications. Version 1.0 of the specification is supposed to have major changes that have an impact on the architecture of the products themselves.
RabbitMQ supports v0-9-1, v0-9, v0-8 and provides a plugin to be compatible with version 1.0. Apache Qpid and few others have adopted v1.0. WSO2 has branched out of Qpid’s v0.91 and is still to adopt the new version.
That’s it. Thank you for reading this post.
I want you to do something for me right now: Leave a comment !!!
Like this post? Don’t forget to share it!
About the Author
Abiramasundari B is the founder of A2Cart.com. She is an Online Ideapreneur and Entrepreneur. A2Cart is the main blog where you can get all info about Ideas, Technology, Blogging, Top lists in the world, etc.,