跨平台、跨语言的消息传递系统?

12

我正在开发一组应用程序,它们共同创建一个处理计量数据的系统。我希望将它们松散耦合,并且系统应该可以通过第三方进行扩展,因此这些应用程序将通过消息传递来绑定在一起。

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

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

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

如果找不到合适的内容,我将不得不自己开发。我可能会使用Google的协议缓冲区进行序列化。如果有人对技术选项有其他建议,请告诉我。

哦,是的——我想在每个通道或每个消息上都可以进行可选加密。

预计时间:感谢所有快速回复。我现在正在查看文档和宣传资料。有人使用过下面的技术吗?使用的结果如何?

8个回答

10

2
SonicMQ可能是您正在寻找的工具。我知道他们非常擅长Progress,但他们也支持其他语言替代方案,并且是消息传递领域的领先玩家。 Sonic Software

2
正如 Paul 所提到的,可以尝试使用支持许多语言客户端和线协议的ActiveMQ
顺便说一下,ActiveMQ 6.x 很可能会使用 Google 的协议缓冲作为其中一种底层传输方式 :)
我在很多项目中都成功地使用过 Apache ActiveMQ。它是 流行和强大的开源消息代理。
顺便说一下,在 .Net / C# 上,ActiveMQ 项目已经创建了NMS API,这是一个用于与 .Net 平台上的消息代理通信的标准 API,现在已经集成到Spring.Net中。

1

1

你考虑过MPI吗?


1

你可以使用类似Mule的ESB(企业服务总线)。其思想是,您可以以任何方式(JMS、http、电子邮件)将消息发送到总线上,总线会为您进行路由。我不知道是否有.NET绑定,但即使没有可用的绑定,您也可以使用扩展机制构建自己的绑定。当然,这意味着您需要在某个地方设置总线。


1
如果您想要坚如磐石的商业支持和与几乎任何东西的集成,IBM的MQ系列,现在称为Websphere MQ,提供了您需求中描述的所有功能。
有时候,您确实会得到您所付出的代价...;-)

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接