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

时间:2021-02-06 12:17:43

I'm developing a set of applications that work together to create a system for processing metering data. There's several reasons I want to have them loosely coupled and the system should be extensible by third parties, so the apps will be tied together via messaging.

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

I'm looking for a messaging system that offers bindings in (at least) C#, Java and Python and supports messaging patterns like Publish-Subscribe, Guaranteed Delivery, Selective Consumer (like Peek in .Net Messaging).

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

As far as I could find out, there's nothing wrong with JMS or .Net Messaging, it's just that they are for .Net / Java only.

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

The system should give me control over which transport mechanism (Sockets, Message Queues, etc.) to use when setting up a channel. I want to be able to both scale out to remote machines and speed things up with local transport facilities.

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

If I can't find anything suitable, I'll have to roll my own. I'd probably use Google's protocol buffers for serialization. If anybody has other recommendations for technology options, fire away.

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

Oh, yes - and I would like to have optional encryption on a per-channel or per-message basis.

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

ETA: Thanks for all the quick replies. I'm working my way through the docs & propaganda now. Has anybody used the technologies below, and for what / with what results?

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

8 个解决方案

#1


9  

activemq

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

Supports all the following protocols

支持以下所有协议

  • OpenWire
  • REST
  • Stomp
  • WS Notification
  • XMPP
  • AMQP

Thanks Paul

#2


2  

SonicMQ might be a tool you're looking for. I know they are heavy into Progress but that they also support other language alternatives as well and are a leading player in the Messaging sector.

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

Sonic Software

#3


2  

As Paul mentioned, try ActiveMQ which supports many language clients and wire protocols.

正如Paul所说,尝试ActiveMQ,它支持许多语言客户端和有线协议。

BTW ActiveMQ 6.x will probably be using Google's protocol buffers as one of its underlying wire transports :)

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

I've used Apache ActiveMQ on many projects to great success. Its the most popular and powerful open source message broker around today.

我在许多项目中使用Apache ActiveMQ取得了巨大的成功。它是当今最受欢迎和最强大的开源消息代理。

Incidentally on .Net / C# the ActiveMQ project has created the NMS API which is a standard API for communicating with message brokers on the .Net platform which is now integrated into Spring.Net

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

#4


1  

Have you considered MPI?

你考虑过MPI吗?

#5


1  

You could use an ESB (Enterprise Service Bus) like Mule. The idea is that you send your messages to the Bus in any way you want (JMS, http, email) and the bus does the routing for you. I don't know if there are .NET bindings, but even if there aren't any available, you can build your own using an extension mechanism. Of course, this means you need to set up a bus somewhere.

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

#6


1  

If you want rock solid, commercial support and integration to just about anything, IBM's MQ Series, now Websphere MQ provides all the features described in your requirements.

如果您需要坚如磐石的商业支持和几乎任何集成,IBM的MQ系列,现在Websphere MQ提供了您的需求中描述的所有功能。

Sometimes you do get what you pay for... ;-)

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

#7


0  

Open Message Queue (Open MQ) is included in the GlassFish application Server and also runs stand-alone. It starts up in a few seconds, and supports Java and C client. Stomp support is currently in development in version 4.4.

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

#8


0  

If you want a multilanguage "standard" -- meaning you are not tied to using a specific broker / intermediary like ActiveMQ, SonicMQ, or WebsphereMQ -- I strongly suggest you look at the AMQP standard (http://www.amqp.org) and related brokers (RabbitMQ, QPid, OpenAMQ; see http://www.amqp.org/confluence/display/AMQP/AMQP+Products).

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

#1


9  

activemq

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

Supports all the following protocols

支持以下所有协议

  • OpenWire
  • REST
  • Stomp
  • WS Notification
  • XMPP
  • AMQP

Thanks Paul

#2


2  

SonicMQ might be a tool you're looking for. I know they are heavy into Progress but that they also support other language alternatives as well and are a leading player in the Messaging sector.

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

Sonic Software

#3


2  

As Paul mentioned, try ActiveMQ which supports many language clients and wire protocols.

正如Paul所说,尝试ActiveMQ,它支持许多语言客户端和有线协议。

BTW ActiveMQ 6.x will probably be using Google's protocol buffers as one of its underlying wire transports :)

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

I've used Apache ActiveMQ on many projects to great success. Its the most popular and powerful open source message broker around today.

我在许多项目中使用Apache ActiveMQ取得了巨大的成功。它是当今最受欢迎和最强大的开源消息代理。

Incidentally on .Net / C# the ActiveMQ project has created the NMS API which is a standard API for communicating with message brokers on the .Net platform which is now integrated into Spring.Net

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

#4


1  

Have you considered MPI?

你考虑过MPI吗?

#5


1  

You could use an ESB (Enterprise Service Bus) like Mule. The idea is that you send your messages to the Bus in any way you want (JMS, http, email) and the bus does the routing for you. I don't know if there are .NET bindings, but even if there aren't any available, you can build your own using an extension mechanism. Of course, this means you need to set up a bus somewhere.

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

#6


1  

If you want rock solid, commercial support and integration to just about anything, IBM's MQ Series, now Websphere MQ provides all the features described in your requirements.

如果您需要坚如磐石的商业支持和几乎任何集成,IBM的MQ系列,现在Websphere MQ提供了您的需求中描述的所有功能。

Sometimes you do get what you pay for... ;-)

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

#7


0  

Open Message Queue (Open MQ) is included in the GlassFish application Server and also runs stand-alone. It starts up in a few seconds, and supports Java and C client. Stomp support is currently in development in version 4.4.

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

#8


0  

If you want a multilanguage "standard" -- meaning you are not tied to using a specific broker / intermediary like ActiveMQ, SonicMQ, or WebsphereMQ -- I strongly suggest you look at the AMQP standard (http://www.amqp.org) and related brokers (RabbitMQ, QPid, OpenAMQ; see http://www.amqp.org/confluence/display/AMQP/AMQP+Products).

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