【问题标题】:Where are the AMQP 1.0 implementations? Would it make sense to wait?AMQP 1.0 的实现在哪里?等待有意义吗?
【发布时间】:2012-08-09 08:22:28
【问题描述】:

我正在研究找出适合我们未来产品的消息传递解决方案,但我真的无法弄清楚这一点。

有很多 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。

不过,我无法找到 1.0 之前的 AMQP 规范的实施者对此的任何明确声明,除了一些模糊的承诺,例如“努力始终实施最新的 AMQP 规范”。

编辑: RabbitMQ 确实说

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

但是,something 告诉我该声明已有 3 年多的历史了,即它早于 AMQP 1.0 的发布。

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

似乎 AMQP 0.9.1 比 1.0 更标准。

嗯,有https://github.com/rabbitmq/rabbitmq-amqp1.0,自称是prototype,貌似半年没工作了。

[1] 我对 SwiftMQ 的第一印象是通过its author's rant on Spring's lacking AMQP support 得到的,这也是我暂时不考虑的原因。我不想指望那个人的支持

【问题讨论】:

标签: rabbitmq amqp qpid


【解决方案1】:

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

AMQP 目前不支持本地或云中的服务总线,但是有一个网络广播解释了微软对 AMQP 的立场,这听起来像是未来版本中的一个重要功能

所以:

等待有意义吗?

我想公平地说答案是:

  • 尽管有最初的热情,但 MS 仍然没有出现,并且我在公告和 recently releasedService Bus for Windows ServerService Bus for Windows Server 的文档中找不到任何提及 AMQP 更新:MS 方面有消息,请参阅 David Ingham 的回答。
  • 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,那是 11 周前。预测当然很难,但事实上,它仍然不在这里。

因此,从最近的公告和声明来看,除了 SwiftMQ 之外,没有任何可用的 AMQP 1.0 实现,也没有太多的热情。我希望 Qpid 很快就会发布,毕竟 1.0 起草者是该项目的成员 - 但如果不是,那就像棺材上的最后一颗钉子。

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

【讨论】:

  • Qpid 的 0.18 版本在不久前发布,现在确实包含对 Java Broker 的 1.0 支持和基于 1.0 的 JMS 客户端。 0.20 版本现在处于 alpha 阶段,并在 c++ 代理和客户端中包含基本的 1.0 支持 - 这将(我希望!)在 beta 之前得到改进。
  • AMQP 1.0 对 ActiveMQ 的支持也在开发中。微软已经在 ServiceBus 中做了几次关于 AMQP 1.0 支持的演示,并计划在 ApacheCon EU 上再做一次(包括与 Qpid 和 SwitfMQ 的互操作演示)。
  • 如果Qpid支持1.0,为什么不宣传呢? qpid.apache.org/download.html 列出了 Qpid 0.18 支持的 AMQP 版本,但只有 0-8/0-90-10。我仔细检查了,0-10 必须与 1.0 不同,因为前者于 2008 年 2 月发布,根据维基百科。顺便提一句。将 Qpid 从en.wikipedia.org/wiki/AMQP#AMQP_1.0_Broker_Implementations上的“net yet AMQP 1.0”列表中移出是有意义的@
  • 我同意,这是我们没有更新网站的失败。我会努力改正的。
【解决方案2】:

OASIS AMQP 1.0 标准已于本周获得批准,请参阅 https://www.oasis-open.org/news/pr/amqp-1-0-approval。就 1.0 实现而言,现在还为时过早,我知道正在进行大量开发,但是,到目前为止,这里有一个可用组件的列表:

经纪人:

客户端库:

【讨论】:

    【解决方案3】:

    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 征求潜在用户、开发人员和其他人(无论是否为 OASIS 成员)的反馈,以提高其技术工作的互操作性和质量。”

    这里有完整的细节:

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

    【讨论】:

    • +1 感谢您提供的链接,其中包含对 5 家公司的使用声明的引用。
    【解决方案4】:

    我能找到的最新的RabbitMQ 团队声明,根据他们的outdated 规范page 也是

    是 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

    【讨论】:

      【解决方案5】:

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

      回答您的问题是否有必要等待:是的!为什么?查看Proton

      Proton 基于 AMQP 1.0 消息传递标准。

      【讨论】:

        【解决方案6】:

        还有其他 1.0 实现。即将发布的 Qpid 版本(可能会在接下来的几周内发布)将为 JMS 客户端和 Java 代理提供 1.0 支持。对其他组件的 1.0 支持的工作正在进行中(针对后续版本),并且基于新的质子库,该库旨在作为一种简单的方式将 1.0 支持添加到现有代理或其他受益于的系统1.0 支持。因此,Qpid 项目肯定致力于全面支持 1.0,它最终将取代所有以前的版本。 API 旨在简化向 1.0 的过渡。

        【讨论】:

        • 然而,让我犹豫是否将其视为 AMQP 1.0 未来广泛采用的迹象是,一群最参与将 AMQP 重构为 1.0 版的人(John O'Hara, Robert Godfrey) 是 Qpid (qpid.apache.org/people.html) 的一部分,所以除了 Qpid 采用 1.0 之外的一切都会相当令人惊讶。实际上,令人惊讶的是,在规范完成后花了整整一年的时间。
        • 我可以理解,最终时间会证明一切。但是我非常有信心会有其他的实现。您提到了 SwiftMQ 和 Microsoft (Azure)。我知道有计划将 AMQP 1.0 支持添加到 ActiveMQ。 AMQP 1.0 的优点之一是在现有的消息传递基础设施中支持它要容易得多。虽然现有的 AMQP 实现将继续支持旧版本以简化过渡,但在我看来,基于这些旧版本的任何新代理都不太可能实现。
        • 我猜你关于 0.9.1 的采用不会变得更强大的说法是公平的 - 没有人愿意赌一匹死马。
        • 目前对于 0.9.1,您可以选择两个代理,其中只有一个具有商业支持(即 RabbitMQ)。我个人认为这种选择不会扩大(尽管我确实看到了两个版本之间的桥梁可用)。 0.9.1 协议几乎需要一个代理(在 1.0 中,代理和点对点通信都是可能的)。所以我认为问题在于你是标准化实现还是协议。两者都是合理的方法。
        • 感谢您指向Microsoft Azure,但到目前为止还没有真正找到确凿的支持证据。我将其拆分为stackoverflow.com/questions/11962897
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        • 2014-08-17
        • 2020-12-26
        • 2012-08-11
        相关资源
        最近更新 更多