Where are the AMQP 1.0 implementations? Would it m

2019-03-14 20:07发布

问题:

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.

回答1:

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



回答2:

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


回答3:

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



回答4:

There are other 1.0 implementations. The upcoming Qpid release (probably available in the next couple of weeks) will have 1.0 support for the JMS client and the Java broker. Work on 1.0 support for other components is underway (targeted for the subsequent release) and is based on the new proton library, which is designed to be usable itself as a simple way of adding 1.0 support to existing brokers or other systems that would benefit from 1.0 support. So the Qpid project is certainly committed to full support of 1.0 which will eventually replace all previous versions. The APIs have been designed to ease the transition to 1.0.



回答5:

Sad, but especially support is something you can rely on me. ;-)

To answer your question whether it makes sense to wait: YES! Why? Check out Proton.

Proton is based on the AMQP 1.0 messaging standard.



回答6:

According to http://geekswithblogs.net/michaelstephenson/archive/2012/08/12/150399.aspx:

AMQP is not supported at present for Service Bus on premise or in the cloud however there is a webcast explaining Microsoft's position on AMQP and it sounds like an important feature to expect in a future release

So:

Would it make sense to wait?

I guess it's fair to say the answer is: No.

  • MS still isn't there despite all the initial enthusiasm, and I could not find any mention of AMQP in the announcement and the documentation of the recently released Service Bus for Windows Server Update: There's news on the MS side, see David Ingham's answer.
  • the upcoming Qpid release (probably available in the next couple of weeks) will have 1.0 support for the JMS client and the Java broker, that was 11 weeks ago. Predictions are of course hard to make, but as a matter of fact, it's still not here.

So except for SwiftMQ, there isn't any working AMQP 1.0 implementation out there, and not a lot of enthusiasm, judging from recent announcements and statements. I expect Qpid to do the release soon, after all, 1.0 drafters are members of the project - but if not, that would be like the final nail in the coffin.

In any case, AMQP 1.0 is not widely adopted and there are no reliable signs it'll become so in the foreseeable future.