纠正消息捕获机制的套接字类型?

时间:2014-01-30 00:22:15

标签: zeromq

我有一个发布商应用程序(PUB),它有N个订阅者(SUB)

这些订阅者需要能够在重新启动时崩溃,或者掉线并丢失消息。

我们已经实现了发布者写入的简单事件存储。 我们已经实现了一个CatchupService,它可以查询事件存储并向订阅者发送错过的消息。

我们已在订户中实现了一个PUSH套接字,该套接字发送错过消息的请求。 订户还有一个PULL套接字,用于侦听单独端口上的错过消息。

订阅者将:

  1. 发现差距
  2. 向我们的CatchupService发送遗漏消息请求,该请求还包含将结果发送到的地址。
  3. catchup服务有一个PULL套接字,可以在其上侦听请求
  4. 当CatchupService收到请求时,它会启动一个工作线程:
    1. 获取错过的消息
    2. 打开连接订户PULL套接字的PUSH套接字
    3. 将错过的消息发送给订阅者。
  5. 这似乎工作得很好但是我们不确定我们是否在这种应用程序中使用正确的套接字类型。这些是正确的还是应该使用不同的模式。

1 个答案:

答案 0 :(得分:1)

听起来不错。否则0MQ能够在对等体短时间离线时从消息丢失中恢复。请查看Socket Options,特别是 ZMQ_SNDHWM 选项。

我不知道0MQ恢复机制是如何保证的,所以也许你最好保持你所拥有的,但这是值得注意的。