Share
Advanced Message Queuing Protocol

Advanced Message Queuing Protocol

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.

Advanced Message Queuing Protocol

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

AMQP Architecture

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 Architecture

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 differentiated

AMQP Assembly and Terminology

Understanding and working with AMQP involves being familiar with its terminology.

Message

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.

Versions:

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!

Save

2 Comments on this Post

  1. Balakrishnan

    nice tutorial 🙂 Here I have understood usage of AMQP. Thank you lot 🙂

    Reply

Leave a Comment

*