Monday, 11 April 2011

Advanced Messaging Queuing Protocol: A Short Note

Synopsis

This note deals with AMQP, and some implementations, especially Qpid and ActiveMQ.

Introduction

AMQP stands for Advanced Messaging Queuing Protocol. It is a standard for cross platform messaging. It is a wire protocol and aims to enable functional compatibility between clients (from various platforms) and messaging brokers.
It is pretty comprehensive and aims to cover all distributed business scenarios. This includes the common messaging paradigms like point-to-point, publish-subscribe, and request-response.

Application area

AMQP will be used to design interoperable, high quality messaging products.
Enterprise applications are being written in a number of dynamic languages such as Ruby, Perl and Python.
AMQP will enable platform independence, and fill in the gap to integrate these applications using the messaging model.

Background

http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol#Development

Implementations

Some popular available AMQP implementations are:
  • OpenAMQ by iMatix is an open source implementation.
  • Apache Qpid
  • Red Hat Enterprise MRG
  • RabbitMQ is an open source implementation.
  • AMQP Infrastructure with Fedora 10 is a major feature.

Qpid

Qpid is a well known implementation of AMQP from Apache.
Qpid provides two AMQP messaging servers:
  • C++ – high performance, low latency server
  • Java – Fully JMS compliant server
It provides AMQP Client APIs for the following languages:
  • C++
  • Java, conformant with JMS 1.1
  • C# .NET, 0-10 using WCF
  • Ruby
  • Python
The java implementation of Qpid is a pure Java message broker that implements the AMQP protocol.
It currently supports the following features:
  • High performance routing for messages
  • Compliant with JMS 1.1 specification.
  • Transaction support
  • Persistence using Berkeley DB Java Edition.
  • Pluggable security using SASL.
  • Management using JMX and a custom management console built using Eclipse RCP
  • Clustering
  • Interoperability with other clients including the Qpid .NET, Python, Ruby and C++ implementations

Between ActiveMQ and Qpid

ActiveMQ is a very popular messaging product from Apache.
The comparison between ActiveMQ and Qpid with respect to AMQP is relevant because both of these are messaging platforms from the Apache stable.
In ActiveMQ 5.x, support for other languages such as Ruby, Perl, Python and PHP are provided via STOMP.
STOMP support for each of these languages has features left to be desired.
Qpid promises to fill that gap.
AMQP, as a technology to support cross platform has steadily been gaining credibility over time.
In an environment where Ruby or Python apps exist, if there is no support for AMQP in the messaging platform, that will be a factor against it.
That is an argument against ActiveMQ 5.x , and a case for Qpid.
Work for AMQP had begun on ActiveMQ 5.x but had been put on hold for user and developer interest. That said, the Architecture for ActiveMQ 6 is designed to be flexible and extensible, and will be accommodating more wire formats, including AMQP and REST.

References

http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
http://qpid.apache.org
http://cwiki.apache.org/confluence
http://activemq.apache.org

No comments:

Post a Comment