4

我非常了解用于将消息从 Java 代码发送到 Java 代码的 Java 消息传递服务 (JMS)。我也知道 CORBA 是一种集成编程,它有助于将不同的编程语言绑定在一起,以便它们可以通过对象在它们之间进行通信。

但是我想知道是否有针对不同语言的通用消息传递服务,例如 JMS,以便将消息从 Java 发送到 C++,反之亦然。

4

11 回答 11

4

我强烈建议您从ZeroMQ开始,除非您需要基于代理的架构(例如基于AMQP的实现)提供的某些功能(例如 RabbitMQ)。

ZeroMQ 有很多绑定,包括 Java、C#、C++、C,但它是基于消息的,因此在不同语言之间传输对象可能更适合 OpenDDS 之类的东西。请参阅比较 OpenDDS 和 ZeroMQ 的使用和性能

ZeroMQ实现的好例子,从基础到复杂;例如

基本 ZeroMQ 请求回复 ZeroMQ 发布订阅 复杂的 ZeroMQ 转发器代理

于 2012-06-25T11:15:36.753 回答
2

尝试查看 29 West(Informatica) 产品,例如 UMP。没有中间的中间件。类似于 Tibco 房车。使用广播、多播和单播。 http://en.wikipedia.org/wiki/29West。它不需要任何经纪人。每个通信参与者都应该安装 UMP,它将运行传输守护进程。对于 java,有一个实现 JMS 规范的库,并允许通过传输来上游和下游消息。

于 2012-06-25T11:05:33.220 回答
2

看看RabbitMQ。它有很多绑定

于 2012-06-25T11:06:59.117 回答
1

如果您不想为此设置一个特殊的服务器(并且不想弄乱 CORBA 的复杂性怪物),请查看 Google 协议缓冲区https://developers.google.com/protocol-buffers/

您可以简单地通过套接字发送所有内容(如果需要,甚至可以连接到自己),无需额外的服务器或配置。

于 2012-06-25T11:15:13.557 回答
0

数据分发服务 (DDS) 是由 OMG 制定的标准,该组织与 CORBA 规范相同。标准化的语言绑定是 C、C++、Java 和 Ada,但也可以使用 C# 和其他语言。您的系统中可以混合使用不同的语言和操作系统。要分发的结构化数据类型以与语言无关的格式(按照标准是 OMG IDL 的子集)指定,然后将其转换为特定于语言的接口和数据类型以供您的应用程序使用。

DDS 规范支持许多高级数据管理功能,例如强类型和内容感知数据总线、分布式状态管理和历史数据访问。其丰富的服务质量设置允许将大量复杂性从应用程序转移到中间件。

DDS 实施通常具有高度可扩展性和分散性。参与 DDS 基础设施的组件在空间和时间上都是解耦的。一些 DDS 产品部署在许多任务和业务关键系统中。

有关非常简短的介绍和参考列表,请参阅此 Wikipedia 条目。我专注于 DDS 超过 10 年,我仍然喜欢它,我认为它是最有用的技术之一。

于 2012-06-25T19:41:05.743 回答
0

TIBCO RV,它有很多接口,如 Java、C、C++、.NET 等等。

于 2012-06-28T05:59:56.740 回答
0

看看http://qpid.apache.org/

您同时拥有 Java/C++ 代理实现,并且这些和其他一些语言可以交换消息。

于 2012-06-25T11:04:14.527 回答
0

HornetQ 有一个 STOMP 和 REST 实现,可以被其他语言使用: TechnicalFaqHornetQ

于 2012-06-25T11:05:22.790 回答
0

您可以查看 Spread API (www.spread.org) 以查看它是否符合您的要求。

于 2012-06-25T11:22:27.780 回答
0

我知道ActiveMQ可以完成工作。我们通常使用协议缓冲区来让我们的对象通过网络进行序列化。XML 可以工作,但主要的是你不想要任何一种语言决定使用的随机内存块来表示在线上的对象,你想要一个已知的序列化格式。

于 2012-06-25T11:26:43.160 回答
0

另一个建议是OpenMQ。在其包中,它包括 C 头文件和可以链接 C/C++ 程序的库文件。

于 2012-11-29T04:13:00.463 回答