AMQP的意义是什么?

10
据我理解,AMQP 0.9.1 的主要优点在于可以以与代理无关的方式发送和接收消息,并配置您的交换/绑定/队列,从而使您能够不费吹灰之力地切换代理实现。
现在,AMQP 1.0 只定义了一种线级协议,因此您实际上必须了解代理的具体情况才能实现大多数消息模式。
那么,为什么我会更喜欢符合 AMQP 的代理,而不是不符合该协议的代理呢?
如果代理实现了 AMQP 1.0,则仍然需要特定于代理的客户端代码。使用 AMQP 0.9.1,则在理论上独立于代理,但最终可能会选择 RabbitMQ,因为他们似乎是唯一真正维护 AMQP 0.9.1 全面支持的人。
1个回答

5
很遗憾,您的担忧非常合理。Pieter Hintjens有一篇很好的文章,声称“AMQP/1.0将成为历史上一个主要的文档化例子,说明如何失败的标准化努力,并在此过程中伤害了很多人。”
回答您的问题:“为什么我会喜欢符合AMQP标准的消息代理而不是不符合标准的代理?”绝对不是因为您现在可以更改消息代理提供商,因为这不再是必需的。我认为只有两种情况下会选择AMQP消息代理:
1)您已经习惯使用并且方便使用该代理
2)AMQP仍然具有在多种编程语言中可用的客户端的优势。但STOMP也可以在这里使用。

JMS为Java平台提供了标准的消息API,而AMQP则为所有平台提供了标准的消息协议。AMQP并不提供行业标准API的规范。相反,它提供了一个行业标准的线级二进制协议的规范,以描述如何在网络上结构化和发送消息。使用AMQP,我们可以使用任何符合AMQP标准的客户端库和任何符合AMQP标准的代理。因此,使用AMQP的消息客户端完全不关心使用哪个AMQP客户端API或AMQP消息代理。 - java_geek
@java_geek 尽管你的评论听起来与原意很接近,但在一些地方似乎不正确。AMQP 0.9.1 允许您所描述的内容(交换客户端和代理实现并保持互操作性),但是在 1.0 中,这并不总是正确的,因为代理可能仅实现了部分可期望的内容,因此替换一个代理的选项并不总是正确的。 - Jan Vlcinsky

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