具有持久存储的pub / sub中间件

时间:2013-10-01 13:13:30

标签: messaging publish-subscribe middleware in-memory-database distributed-system

我正在寻找分布式实时系统的中间件。要求非常简单 - 使用持久存储的发布/订阅键值存储:

  1. 发布商将“数据项”发布到分发给这些主题的订阅者的主题。这些数据项不需要排队,因为只有最新版本是相关的(想想股票价格)。如果没有订阅者,则应该保留数据项以供稍后使用(参见2) - 仅限最新版本,不排队。
  2. 订阅者可以随时联机,他们需要立即从指定主题接收最新版本的数据项,然后在发生时接收更新。
  3. 那里有什么可以自然地实现这种模式吗?我到目前为止看到的最好的是Redis,但它需要在每一方进行两次单独的交易,在发布者上写和发布(以及订阅+获取订阅者)这意味着它不是一个基本用例,并不保证它不会错过更新发生在这两个电话之间。我知道的一个商业产品是Tibco ActiveSpaces,但理想情况下是寻找开源和.NET或至少基于Windows的东西。

1 个答案:

答案 0 :(得分:0)

OMG's Data Distribution Service for Real-Time Systems(简称DDS)是一个标准,有几个实现可以做你想要的。

您正在寻找的“持久数据”可以通过使用名为“transient”,“transient_local”或“persistent”的正确服务质量设置来实现,具体取决于您是否希望数据的生命周期为超过其源的生命周期,甚至整个系统的生命周期。

“最后一个值”语义是一种常见的用例和默认行为,但如果需要,DDS可以存储更多内容。

如需更长时间的介绍,请查看this video