ActiveMQ 中的跨语言支持

Posted

技术标签:

【中文标题】ActiveMQ 中的跨语言支持【英文标题】:Cross language support in ActiveMQ 【发布时间】:2015-05-06 19:59:46 【问题描述】:

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

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

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

    如果是 1。它只是连接到受协议控制的总线还是协议选择也会影响实际消息内容的类型。 IE。是否可以从 Java JMS 向主题发布消息并让 Python STOMP 客户端正确读取该消息?

【问题讨论】:

【参考方案1】:

不同的客户端可以使用相同的协议实现语言间互操作性,例如用于 Java 的 JMS、用于 C++ 的 CMS 和用于 .NET 的 NMS(当涉及到 OpenWire 时)。我认为除了一些CMS wrappers 之外,没有什么好的 OpenWire Python 客户端。

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

因此,您可以使用 stomp 甚至 AMQP 1.0,来自 Microsoft here 的一些指令。

【讨论】:

以上是关于ActiveMQ 中的跨语言支持的主要内容,如果未能解决你的问题,请参考以下文章

C语言中语句的跨行支持总结

基于Thrift的跨语言高可用高性能轻量级的RPC框架

一文带你了解 Thrift,一个可伸缩的跨语言 RPC 框架(pinpoint 源码分析系列)

ActiveMQ入门

《一种策略融合的跨语言文本情感倾向判别方法》论文学习笔记(大一下)

论文泛读96异构图神经网络的跨语言文本分类