首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳发布/订阅“中间件”

最佳发布/订阅“中间件”
EN

Stack Overflow用户
提问于 2009-07-10 22:26:03
回答 9查看 9.1K关注 0票数 9

我正在市场上寻找一个良好的开源网络,基于Pub/Sub (观察者模式)库。我还没找到我喜欢的:

  • JMS -绑定到Java,将消息内容视为哑二进制blobs。
  • NDDS - $$,使用IDL
  • CORBA/ICE - Pub/Sub是建立在RPC之上的,CORBA API是不直观的。
  • JBOSS/ESB -不太熟悉

如果这样一套方案能适用于以下几个方面,那就太好了:

  • 网络基础
  • 意识到有效负载数据,用户不必担心endian/序列化问题。
  • 多语言支持(C++,ruby,Java,python )
  • 没有自动生成的代码(没有IDLs!)
  • 直观订阅/主题管理

为了好玩,我有创造了我自己。有什么想法?

EN

回答 9

Stack Overflow用户

发布于 2009-07-10 22:28:34

您可能需要查看RabbitMQ

票数 5
EN

Stack Overflow用户

发布于 2010-08-23 08:15:45

正如前面的文章指出的,您的选项之一是OpenSplice DDS,它是OMG标准的开源实现(NDDS实现的相同标准)。

与您正在考虑的其他中间件相比,OpenSplice的主要优点可以概括为:

  • 性能
  • 对QoS的丰富支持(持久性、容错性、及时性等)
  • 数据中心(例如查询和过滤数据流的可能性)

我想了解的是你对IDL有什么问题。DDS使用IDL作为独立于语言的方式来指定用户数据类型.但是DDS并不局限于IDL,如果您愿意的话,您可以使用XML。指定数据类型并将它们的表示形式与特定的编程语言分离的优点是中间件可以:

(1)免除序列化数据的负担,

(2)产生非常有效的时间/空间序列化,

(3)确保端到端类型的安全,

(4)允许对整个数据类型(不仅仅是JMS中的标头)进行内容过滤,

(5)启用跨编程语言(如Java、C/C++、C#等)的联机互操作性。

根据您正在设计的系统或应用程序,上面的一些属性可能并不有用/相关。在这种情况下,您可以简单地生成一个,几个,"DDS类型“,这是您的序列化数据持有人。

如果考虑到JMS,它为您提供了5种不同的主题类型,您可以使用这些主题类型发送数据。使用DDS,您也可以这样做,但您可以灵活地准确地定义主题类型。

最后,您可能需要查看Scala和DDS上的这个博客条目,以便更详细地讨论类型和静态类型为什么是好的,特别是在分布式系统中。

-AC

票数 4
EN

Stack Overflow用户

发布于 2009-07-10 22:34:53

我们使用RTI DDS实现。它需要花费$$,但它支持许多服务质量参数。

有一个名为OpenDDS的免费直接合成实现,但我没有使用它。

如果目标语言是静态类型的,我看不出您如何才能避免预先定义数据类型的需要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1112279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档