AMQP 0-9-1与1-0的区别

24

我正在寻找一种消息传递服务,用于将一些C#应用程序与一些Java应用程序进行接口交互的新项目。我非常喜欢RabbitMQ,因为它似乎对这两种技术都有很好的支持。我在RabbitMQ规范中看到,目前只提供AMQP 0-9-1模型。

那会不会成为一个难以解决的问题?也许我应该考虑使用提供AMQP 1.0的ActiveMQ呢?

感谢您的建议

1个回答

29

您的问题在官方协议概述中得到了完美解答:protocol overview

AMQP 1.0

尽管名称相同,但AMQP 1.0与AMQP 0-9-1 / 0-9 / 0-8协议在线路级别上没有共享任何东西,是一种根本不同的协议。 AMQP 1.0要求的语义要少得多;因此,为现有代理添加对AMQP 1.0的支持更加容易。该协议比AMQP 0-9-1复杂得多,并且客户端实现较少。

RabbitMQ通过插件支持AMQP 1.0。

如果您的客户端都实现了AMQP 1.0,并且相对于0.9.x,它为您提供了显著优势,并且您无法摆脱它,而另一个代理对1.0的支持比RabbitMQ更好(目前时写作本文时其插件处于“实验”阶段),那么也许您应该考虑另一个代理。否则,我认为这对您来说并没有太大的实际差别,并且RabbitMQ似乎正在努力添加完整的1.0支持,因此它可能是未来可行的升级路径。如果您自己无法指出0.9.x本身为什么成为了无法继续的原因,我也无法明确说明。


3
你能否提供任何关于RabbitMQ完全支持AMQP 1.0的证据链接?根据我所了解的,他们计划通过插件支持AMQP 1.0,并“无限期”支持AMQP 0-9-1。 - Marc
2
它由插件支持,他们将维护它并修复任何错误。那么它算是完全支持吗? - sij_a
2
完全支持!≠本地支持。在我看来,本地支持应该是核心的一部分,而不需要插件。但是插件可以用来完全支持某些功能,只是因为它不是软件的正常使用情况,所以它只是插件的一部分。 - ruhnet
就我个人的看法,RabbitMQ的架构几乎所有的东西都是插件化的。所以“插件”这个名字并不意味着它不是软件的正常使用方式。 - undefined

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