ActiveMQ中的跨语言支持


3

我正在使用Python和Java编写的几种不同的服务。我现在已经到了需要让这些服务相互通信的地步,ActiveMQ似乎是一个明智的选择。

但是,我不确定我是否遵循ActiveMQ提供的不同协议的概念。主要问题是,我是否必须实施所有服务才能使用相同的协议访问总线?

  1. 是否有可能同时运行多个不同的连接协议的同一总线?

  2. 如果是的话,它是否仅仅连接到由协议管理的总线,或协议选择是否也影响实际的消息内容的类型。即是否可以从Java JMS向主题发布消息并让Python STOMP客户端正确地读取该消息?

2

不同的客户端可以使用相同的协议,如JMS for Java,C++的CMS和.NET的NMS(涉及到OpenWire)来实现语言间的互操作性。我不认为有一个伟大的OpenWire Python客户端,除了一些CMS wrappers

另一方面,ActiveMQ做了很好的工作,以在不同协议之间建立桥梁,以便他们可以共享相同的队列/主题。它能够很好地读取从OpenWire/JMS发送的stomp,MQTT和AMQP消息。请注意,您可能希望避免JMS的高级功能(如MapMessage),依赖特定的JMS标头并坚持简单的文本消息或字节消息。这座桥不是100%透明的,但正如我所说,做得很好。

所以,你可以去跺脚甚至AMQP 1.0,从微软here一些指令。