Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where are the AMQP 1.0 implementations? Would it make sense to wait?

I'm doing research to figure out what messaging solution to settle on for our future products and I can't really figure this one out.

There is a bunch of AMQP 0.9.1 implementations (RabbitMQ, Apache Qpid, OpenAMQ, to name a few), but no AMQP 1.0 implementation, although 1.0 has been finalized October 2011. Well, except for SwiftMQ [1].

Reading up on 1.0, it seems to be a major departure from the pre-1.0 spec, so it seems understandable that there's little enthusiasm for a major rewrite of something that is working fine. In fact, I can't see why RabbitMQ and others wouldn't just decide to migrate to ZeroMQ instead of AMQP 1.0.

Still, I cannot find any clear statement on that by implementors of the pre-1.0 AMQP spec, except some vague commitments like 'striving to always implement the latest AMQP spec'.

Edit: RabbitMQ actually does say

A future version of RabbitMQ will implement AMQP 1.0. Please contact us for details.

However, something tells me that statement is more than 3 years old, i.e. it predates the release of AMQP 1.0.

So are there any indications AMQP 1.0 could become a standard, except for the fact that major banks - and Microsoft - are behind it? The latter btw. without an implementation of its own.

It almost seems like AMQP 0.9.1 is more standard than 1.0 will be.

Well, there's https://github.com/rabbitmq/rabbitmq-amqp1.0, it's self-proclaimed status is prototype, with no work on it apparently for half a year.

[1] My first impression of SwiftMQ I got by means of its author's rant on Spring's lacking AMQP support, which is why I'm not considering it for the time being. I wouldn't want to count on support from that guy.

like image 946
Evgeniy Berezovsky Avatar asked Aug 13 '12 05:08

Evgeniy Berezovsky


People also ask

Is AMQP and RabbitMQ the same?

AMQP is the core protocol for RabbitMQ (a Message Broker), but it also supports STORM, MQTT and HTTP through the use of plugins. HTTP — you're probably familiar with this one. It is not a messaging protocol, but management plugins in RabbitMQ use HTTP to send and receive messages.

What is AMQP used for?

The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. It connects systems, feeds business processes with the information they need and reliably transmits onward the instructions that achieve their goals.

Does RabbitMQ use AMQP?

RabbitMQ is a lightweight, reliable, scalable and portable message broker. But unlike many message brokers familiar to Java developers, it's not based on JMS. Instead, your applications communicate with it via a platform-neutral, wire-level protocol: the Advanced Message Queuing Protocol (AMQP).

Which of the following AMQP frame type is used to inform the changes in state of transfer?

attach: The message is appended with a link that is necessary in order to use the data transfer. flow: Changes the status of a link. transfer: The actual message is transmitted with the transfer frame. disposition: A disposition frame provides information on changes to the information delivery.


3 Answers

AMQP 1.0 is an alternative to AMQP 0-9-1 in name only. The two are so different that it might have been clearer to give them different names.

Choosing a current 0-9-1 implementation does not limit you:

0-9-1 defines a broker and messaging model, while 1.0 defines a messaging transport. Therefore it is possible to combine the AMQP 1.0 transport with 0-9-1, as RabbitMQ demonstrated at the AMQP 1.0 conference in NYC in 2011. Because it is a transport, AMQP 1.0 can also be attached to proprietary and/or closed non-royalty-free brokers.

AMQP 1.0 has just entered "a 60-day public review period in preparation for a member ballot to consider its approval as an OASIS Standard".

"The 60-day public review starts 14 August 2012 and ends 13 October 2012.

This is an open invitation to comment. OASIS solicits feedback from potential users, developers and others, whether OASIS members or not, for the sake of improving the interoperability and quality of its technical work."

Full details here:

https://www.oasis-open.org/news/announcements/60-day-public-review-for-advanced-message-queueing-protocol-amqp-v1-0-candidate-o

like image 145
alexis Avatar answered Sep 28 '22 02:09

alexis


The OASIS AMQP 1.0 Standard was ratified this week, see https://www.oasis-open.org/news/pr/amqp-1-0-approval. In terms of 1.0 implementations, it's still a little early and I know there's a lot of development going on, but, as of now, here's a list of available components:

Brokers:

  • SwiftMQ - http://www.swiftmq.com/downloads/
  • Apache Qpid Java broker (0.18 release) - http://qpid.apache.org
  • Microsoft Azure Service Bus - http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-amqp-overview/

Client libraries:

  • SwiftMQ Java client library - http://www.swiftmq.com/downloads/
  • Apache Qpid JMS client library (0.18 release) - http://qpid.apache.com
  • Apache Qpid Proton-C - C client lib inc. bindings for Python and PHP - http://qpid.apache.org/proton/
  • Apache Qpid Proton-J - Java client lib - http://qpid.apache.org/proton/
  • Microsoft Azure Service Bus .NET client - http://nuget.org/packages/ServiceBus.Preview
like image 31
David Ingham Avatar answered Sep 28 '22 02:09

David Ingham


The most recent that I could find in terms of statement from the RabbitMQ team, which, according to their outdated specification page also

is an active participant in the AMQP Working Group, which aims to deliver an implementable AMQP 1.0 draft this year.

is this message from RabbitMQ's Simon MacMullen from January 2012 (ellipsis, emphasis mine):

Also, why would RabbitMQ consider not supporting 1.0? Is the thinking that it may not see industry adoption, or something else?

[..] it's such a big difference from 0-9-1 that I view it as a different protocol really, despite the name. [..]

So yes, I'd like to support it, but I'd also like to support MQTT and SQS and [..]

And it may not see much industry adoption, [..] And without wanting to complain too much, it is rather heavy and complicated, so to support it properly we'd be looking at not doing quite a lot of other stuff we want to.

Of course, if AMQP 1.0 takes off substantially then that could well change things.

Source: https://groups.google.com/d/topic/rabbitmq-discuss/9Hj0FzgyLQk/discussion

like image 23
Evgeniy Berezovsky Avatar answered Sep 28 '22 03:09

Evgeniy Berezovsky