我正在使用Python和Java编写的几种不同的服务。我现在已经到了需要让这些服务相互通信的地步,而ActiveMQ似乎是一个明智的选择。
但是,我不确定我是否完全遵循ActiveMQ可用的不同协议的概念。主要问题是,我是否必须实施所有服务才能使用相同的协议来访问总线?
是否可以同时运行具有多种不同连接协议的同一总线?
如果是1.是否只是连接到由协议管理的总线,或者协议选择是否也会影响实际消息内容的类型。即是否可以将Java JMS中的消息发布到主题并让Python STOMP客户端正确读取该消息?
答案 0 :(得分:2)
可以由使用相同协议的不同客户端进行Inter语言互操作,例如JMS for Java,CMS for C ++和NMS for .NET(当涉及到OpenWire时)。我不认为有一个很棒的OpenWire Python客户端,除了一些CMS wrappers。
另一方面,ActiveMQ可以很好地桥接不同的协议,以便它们可以共享相同的队列/主题。它非常适合读取从OpenWire / JMS发送的stomp,MQTT和AMQP消息。请注意,您可能希望避免使用像MapMessage这样的JMS的高级功能,依赖于特定的JMS头并坚持使用简单的文本消息或字节消息。这座桥不是100%透明,但正如我所说,做得很好。
所以,您可以使用stomp甚至是AMQP 1.0,来自Microsoft here的一些指示。