Vinay has posted 3 posts at DZone. View Full User Profile

Advanced Messaging Queuing Protocol

01.31.2010
| 6001 views |
  • submit to reddit

This article 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

Published at DZone with permission of its author, Vinay Tawney.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Alexis Richardson replied on Mon, 2010/02/01 - 10:25am

I feel it only fair to describe RabbitMQ in this context.

RabbitMQ implements AMQP and has a VAST number of language clients and users in the community.  Check out http://www.rabbitmq.com/how.html to get started.

The latest news is that OpenCredo have released a pretty comprehensive set of tools for Spring support: http://www.russmiles.com/home/2010/1/26/introducing-the-new-opencredo-amq-project.html

Cheers,

alexis

RabbitMQ

 

 

 

 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.