ActiveMQ 中的跨语言支持

Cross language support in ActiveMQ

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

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

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

  2. 如果是,则 1。它只是连接到受协议管理的总线,还是协议选择也会影响实际消息内容的类型。 IE。是否可以 post 来自 Java JMS 的消息发送到主题并让 Python STOMP 客户端正确读取该消息?

跨语言互操作性可以由使用相同协议的不同客户端实现,例如 Java 的 JMS、C++ 的 CMS 和 .NET 的 NMS(涉及 OpenWire 时)。我不认为有一个很棒的 OpenWire Python 客户端,除了一些 CMS wrappers.

另一方面,ActiveMQ 在桥接不同协议方面做得很好,因此它们可以共享相同的 queues/topics。它非常适合读取从 OpenWire/JMS 发送的 stomp、MQTT 和 AMQP 消息。请注意,您可能希望避免使用 MapMessage 等 JMS 的高级功能,依赖特定的 JMS headers 并坚持使用简单的文本消息或字节消息。这座桥不是 100% 透明的,但正如我所说,做得很好。

因此,您可以使用 stomp 甚至 AMQP 1.0,Microsoft here 的一些说明。