我正在寻找一种消息传递服务,用于将一些C#应用程序与一些Java应用程序进行接口交互的新项目。我非常喜欢RabbitMQ,因为它似乎对这两种技术都有很好的支持。我在RabbitMQ规范中看到,目前只提供AMQP 0-9-1模型。
那会不会成为一个难以解决的问题?也许我应该考虑使用提供AMQP 1.0的ActiveMQ呢?
感谢您的建议
您的问题在官方协议概述中得到了完美解答: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本身为什么成为了无法继续的原因,我也无法明确说明。