AMQP 1.0实现在哪里?等待有意义吗?

24

我正在进行研究,以确定未来产品要采用哪种消息传递解决方案,但我现在还无法确定。

虽然有许多AMQP 0.9.1实现(例如RabbitMQ、Apache Qpid、OpenAMQ等),但没有AMQP 1.0的实现,尽管1.0已于2011年10月完成。除了SwiftMQ [1]之外。

阅读1.0的相关资料后,发现它似乎与1.0之前的规范存在重大区别,因此理解为什么很少有人热情地进行一项正在良好运作的工作的重大改写。事实上,我看不出为什么RabbitMQ和其他公司不会决定迁移到ZeroMQ而不是AMQP 1.0。

但是,我找不到关于之前的AMQP规范的实施者明确表态的清晰声明,除了一些模糊的承诺,如“努力始终实施最新的AMQP规范”。

编辑: RabbitMQ实际上确实表示

未来版本的RabbitMQ将实现AMQP 1.0。请联系我们获取详情。

然而,有些情况告诉我该声明已经超过3年了,即它早于AMQP 1.0的发布。

那么除了主要银行和微软支持之外,是否有任何迹象表明AMQP 1.0可能成为标准?后者没有自己的实现。

似乎AMQP 0.9.1比1.0更成为标准。

嗯,有https://github.com/rabbitmq/rabbitmq-amqp1.0,它自称是“原型”状态,半年内似乎没有进行任何工作。

[1] 我对SwiftMQ的第一印象来自其作者在Spring缺乏AMQP支持方面的怒斥,这就是为什么我暂时不考虑它。我不想依赖那个人提供的支持


1
这是关于iMatix(ZeroMQ的创始人)的有趣背景信息:http://www.imatix.com/articles:whither-amqp - Evgeniy Berezovsky
Eugene提到的有关1.0版本之前背景的文章已被删除,并移至http://www.imatix.com/articles:whats-wrong-with-amqp/。 - Anton
6个回答

16

AMQP 1.0只是在名称上与AMQP 0-9-1有所不同。它们之间的差异非常大,以至于为它们赋予不同的名称可能会更清晰明了。

选择当前的0-9-1实现并不会限制您:

0-9-1定义了代理和消息模型,而1.0定义了消息传输。因此,可以将AMQP 1.0传输与0-9-1结合使用,正如RabbitMQ在2011年纽约举办的AMQP 1.0会议上所展示的那样。由于它是一种传输方式,因此AMQP 1.0也可以连接到专有和/或闭源的非免费代理商。

AMQP 1.0刚刚进入“60天公开审查期,准备在成员投票考虑将其批准为OASIS标准”。

“60天公开审查从2012年8月14日开始,到2012年10月13日结束。

这是一个公开邀请,旨在征求潜在用户、开发人员和其他人的反馈意见,无论是否为OASIS成员,以改善其技术工作的互操作性和质量。”

完整详情请参见:

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


+1 感谢提供包含5家公司使用声明的链接。 - Evgeniy Berezovsky

8
本周OASIS AMQP 1.0标准已获批准,详情请见https://www.oasis-open.org/news/pr/amqp-1-0-approval。至于1.0实现方面,目前仍较为初期,众多开发工作正在进行中。目前可用组件的列表如下:
代理服务器: 客户端库:

5

根据他们过时的规范页面,我能找到的最新的关于RabbitMQ团队声明的消息是:

RabbitMQ团队是AMQP工作组的活跃参与者,该工作组旨在在今年发布可实现的AMQP 1.0草案。

这条消息来自于RabbitMQ的Simon MacMullen,时间是2012年1月(省略号和强调为本人添加)。

此外,为什么RabbitMQ会考虑不支持1.0呢?是因为认为它可能不会被行业广泛采用,还是其他原因?实际上,我认为它与0-9-1相比有很大的区别,实际上可以看作是一种不同的协议,尽管名称相同。所以,是的,我想支持它,但我也想支持MQTT和SQS等其他技术。而且它可能不会被广泛采用。而且,不想抱怨太多,它非常复杂,如果要正确支持它,我们需要放弃其他许多想做的事情。当然,如果AMQP 1.0得到了广泛的应用,情况可能会改变。

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


3

还有其他的1.0实现。即将发布的Qpid版本(可能在接下来的几周内)将为JMS客户端和Java代理提供1.0支持。其他组件的1.0支持正在进行中(目标是下一个版本),并基于新的proton库进行开发,该库旨在以自身可用的方式添加1.0支持,以使现有代理或其他受益于1.0支持的系统能够简单地使用。因此,Qpid项目肯定致力于完全支持1.0,这将最终取代所有以前的版本。API已经被设计成能够轻松过渡到1.0。


1
然而,使我犹豫不决的是将此视为AMQP 1.0未来广泛采用的迹象的原因是,最积极参与将AMQP重构为成为版本1.0的一群人(John O'Hara,Robert Godfrey)是Qpid(http://qpid.apache.org/people.html)的一部分,因此除了Qpid采用1.0之外的其他情况都会相当令人惊讶。实际上,令人惊讶的是,在规范最终确定一年后,仍需要这么长时间。 - Evgeniy Berezovsky
我能理解这一点,最终时间会证明一切。但是我非常有信心会有其他的实现方式。你提到了SwiftMQ和Microsoft(Azure)。我知道有计划将AMQP 1.0支持添加到ActiveMQ中。AMQP 1.0的一个好处是它更容易在现有的消息基础设施中支持。虽然现有的AMQP实现将继续支持旧版本以便于过渡,但我认为基于那些旧版本的任何新代理都很不可能被实现。 - Gordon Sim
我想你说0.9.1采用率不会再增强的说法是公平的 - 没有人愿意押注在一匹死马上。 - Evgeniy Berezovsky
1
目前对于0.9.1版本,您可以选择两个代理商,其中只有一个提供商业支持(即RabbitMQ)。我个人认为这种选择不会扩大(尽管我确实看到两个版本之间的桥梁可用)。0.9.1协议几乎需要代理商(使用1.0协议,代理商和点对点通信都是可能的)。因此,我认为问题在于您是否标准化实现或协议。这两种方法都是合理的。 - Gordon Sim
谢谢您指向微软Azure,但是到目前为止我还没有找到确凿的支持证据。我已经在http://stackoverflow.com/questions/11962897上提出了这个问题。 - Evgeniy Berezovsky

1

很遗憾,但是特别的支持是你可以依靠我的。;-)

回答你的问题,是否值得等待:是的!为什么?看看Proton

Proton基于AMQP 1.0消息标准。


0
根据http://geekswithblogs.net/michaelstephenson/archive/2012/08/12/150399.aspx

目前,Service Bus在本地或云中不支持AMQP,但有一个网络研讨会解释了微软对AMQP的立场,听起来这是一个重要的功能,可以期待在未来的版本中实现。

所以:

等待有意义吗?

我想可以说答案是:

  • 尽管最初的热情,微软仍未能达到目标,而且我在最近发布Service Bus for Windows Server 更新的公告和文档中找不到任何有关AMQP的提及:微软方面有消息,详见David Ingham的回答。
  • 即将发布的Qpid版本(可能在接下来的几周内)将支持JMS客户端和Java代理的1.0版本,这是11周前的事了。预测当然很难做出,但事实上,它还没有到来。

因此,除了SwiftMQ之外,没有任何可用的AMQP 1.0实现,而且从最近的公告和声明来看,也没有太多的热情。我希望Qpid能尽快发布新版本,毕竟,1.0起草者是该项目的成员 - 但如果没有,那将是最后一根稻草。

无论如何,AMQP 1.0并没有被广泛采用,也没有可靠的迹象表明它在可预见的未来会变得流行起来。

Qpid的0.18版本已经在一段时间前发布,其中包含Java Broker和基于1.0的JMS客户端的支持。目前0.20版本正在测试阶段,C++ Broker和客户端已经基本支持1.0 - 在正式版之前还将进一步改进(我希望如此!)。 - Gordon Sim
ActiveMQ正在开发AMQP 1.0支持。微软已经在ServiceBus中展示了他们的AMQP 1.0支持,并计划在ApacheCon EU上进行另一次演示(包括与Qpid和SwitfMQ的互操作演示)。 - Gordon Sim
如果Qpid支持1.0,为什么没有宣传呢?http://qpid.apache.org/download.html列出了Qpid 0.18支持的AMQP版本,但只有“0-8/0-9”和“0-10”。我进行了双重检查,“0-10”必须与“1.0”不同,因为前者是根据维基百科于2008年2月发布的。顺便说一下,在https://en.wikipedia.org/wiki/AMQP#AMQP_1.0_Broker_Implementations上将Qpid从“尚未支持AMQP 1.0”的列表中移出是有意义的。 - Evgeniy Berezovsky
我同意,我们没有更新网站是我们的失误。我会尽力纠正这个问题。 - Gordon Sim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接