问题 跨平台,跨语言的消息传递系统?


我正在开发一组应用程序,这些应用程序一起工作以创建用于处理计量数据的系统。有几个原因我希望它们松散耦合,系统应该可以被第三方扩展,因此应用程序将通过消息传递捆绑在一起。

我正在寻找一种消息系统,它提供(至少)C#,Java和Python中的绑定,并支持发布 - 订阅,保证交付,选择性消费者(如Peek in .Net Messaging)等消息模式。

据我所知,JMS或.Net Messaging没有任何问题,只是它们仅适用于.Net / Java。

系统应该让我控制在设置通道时使用哪种传输机制(套接字,消息队列等)。我希望能够扩展到远程机器并使用本地交通设施加快速度。

如果我找不到合适的东西,我将不得不自己动手。我可能会使用Google的协议缓冲区进行序列化。如果有人对技术方案有其他建议,请开火。

哦,是的 - 我希望在每个频道或每个消息的基础上进行可选加密。

ETA:感谢所有快速回复。我现在正在通过文档和宣传工作。有没有人使用过以下技术,以及结果是什么?


4424
2017-11-03 13:38


起源



答案:


ActiveMQ的

http://activemq.apache.org/cross-language-clients.html

支持以下所有协议

  • OpenWire
  • 休息
  • 重踏
  • WS通知
  • XMPP
  • AMQP

谢谢 保罗


9
2017-11-03 13:45





SonicMQ可能是您正在寻找的工具。我知道他们很重视Progress,但他们也支持其他语言替代方案,并且是Messaging领域的领先者。

Sonic软件


2
2017-11-03 13:44





正如保罗所说,试试吧 ActiveMQ的 它支持许多语言客户端和有线协议。

BTW ActiveMQ 6.x可能会使用Google的协议缓冲区作为其基础线传输之一:)

我在许多项目中使用Apache ActiveMQ取得了巨大的成功。它的   流行 和强大的开源消息代理今天。

顺便提一下,在.Net / C#上,ActiveMQ项目创建了 NMS API 这是一个标准的API,用于与.Net平台上的消息代理进行通信,该平台现已集成到.Net平台中 Spring.Net


2
2017-11-03 16:32





你有没有考虑过 MPI


1
2017-11-03 13:45





您可以使用ESB(企业服务总线) 马骡。这个想法是你以任何你想要的方式(JMS,http,电子邮件)将你的消息发送到总线,总线为你做路由。我不知道是否有.NET绑定,但即使没有任何可用,您也可以使用扩展机制构建自己的绑定。当然,这意味着您需要在某处设置公交车。


1
2017-11-03 13:51





如果你想要坚如磐石的商业支持和几乎任何东西的集成,那就是IBM的MQ系列 Websphere MQ 提供您要求中描述的所有功能。

有时你  得到你付出的...... ;-)


1
2017-11-03 13:59





打开消息队列(Open MQ) 包含在GlassFish应用程序服务器中,也可以独立运行。它在几秒钟内启动,并支持Java和C客户端。 Stomp支持目前正在4.4版中开发。


0
2018-03-27 17:28





如果你想要一个多语言“标准” - 意味着你不依赖于使用像ActiveMQ,SonicMQ或WebsphereMQ这样的特定经纪人/中间人 - 我强烈建议你看看AMQP标准(http://www.amqp.org)和相关的经纪人(RabbitMQ,QPid,OpenAMQ;见 http://www.amqp.org/confluence/display/AMQP/AMQP+Products)。


0
2018-03-03 18:10