我正在开发一组应用程序,这些应用程序协同工作以创建用于处理计量数据的系统。有几个原因我希望它们松散耦合,系统应该可以被第三方扩展,因此应用程序将通过消息传递捆绑在一起。
我正在寻找一种在(至少)C#,Java和Python中提供绑定的消息传递系统,并支持发布 - 订阅,保证传递,选择性消费者(如Peek in .Net Messaging)等消息传递模式。
据我所知,JMS或.Net Messaging没有任何问题,只是它们只适用于.Net / Java。
系统应该让我控制在设置频道时使用哪种传输机制(套接字,消息队列等)。我希望能够扩展到远程机器并通过本地交通设施加快速度。
如果我找不到合适的东西,我将不得不自己动手。我可能会使用Google的协议缓冲区进行序列化。如果有人对技术方案提出了其他建议,请离开。
哦,是的 - 我想在每个频道或每个消息的基础上进行可选加密。
ETA:感谢所有快速回复。我正在通过docs&现在宣传。有没有人使用过以下技术,以及结果是什么?
答案 0 :(得分:9)
的ActiveMQ
http://activemq.apache.org/cross-language-clients.html
支持以下所有协议
由于 保罗
答案 1 :(得分:2)
SonicMQ可能是您正在寻找的工具。我知道他们很重视Progress,但他们也支持其他语言替代方案,并且是Messaging领域的领先者。
答案 2 :(得分:2)
正如Paul所提到的,请尝试ActiveMQ,它支持许多语言客户端和有线协议。
BTW ActiveMQ 6.x可能会使用Google的协议缓冲区作为其基础线传输之一:)
我在许多项目中使用Apache ActiveMQ取得了巨大成功。它是今天most popular和强大的开源消息代理。
顺便提一下,在.Net / C#上,ActiveMQ项目创建了NMS API,它是与.Net平台上的消息代理进行通信的标准API,现已集成到Spring.Net
答案 3 :(得分:1)
您考虑过MPI吗?
答案 4 :(得分:1)
您可以使用Mule之类的ESB(企业服务总线)。我们的想法是您以任何您想要的方式(JMS,http,电子邮件)将您的消息发送到总线,并且总线为您进行路由。我不知道是否有.NET绑定,但即使没有任何可用,您也可以使用扩展机制构建自己的绑定。当然,这意味着您需要在某处设置公交车。
答案 5 :(得分:1)
如果您想要坚如磐石,商业支持和集成到任何事物,IBM的MQ系列,现在Websphere MQ提供您要求中描述的所有功能。
有时你做得到你付的......; - )
答案 6 :(得分:1)
如果您想要多语言“标准” - 意味着您不依赖于使用ActiveMQ,SonicMQ或WebsphereMQ等特定经纪人/中间人 - 我强烈建议您查看AMQP标准(http://www.amqp.org)和相关的经纪人(RabbitMQ,QPid,OpenAMQ;见http://www.amqp.org/confluence/display/AMQP/AMQP+Products)。
答案 7 :(得分:0)
Open Message Queue (Open MQ)包含在GlassFish应用程序服务器中,也可以独立运行。它在几秒钟内启动,并支持Java和C客户端。 Stomp支持目前正在4.4版本中开发。