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