使用zeromq缓冲死用户的消息

时间:2015-06-01 11:20:27

标签: zeromq amqp

我在tcp中使用了pub-sub模式。当我的一个订户死亡(例如杀死-9)并使用相同的IDENTITY重新启动时,它不会获得先前的消息。

有什么解决方案,当它重新启动时会收到消息? (我知道0mq不能处理)

  1. 运行发布商
  2. 运行sub0(订阅套接字)
  3. 运行sub1(订阅套接字)
  4. pkill -9 sub0(模拟守护进程死亡)
  5. 发布者发送消息
  6. 再次运行sub0(相同的ZMQ_IDENTITY)
  7. sub0不会收到丢失的消息。

1 个答案:

答案 0 :(得分:2)

这完全是您的申请的责任。请查看指南...特别是Chapter 5 on advanced pub/sub patterns,更具体地说Getting an out of band snapshot

结果是您的发布服务器实际上有两个套接字,一个用于发布,另一个用于其他系统级通信。无论何时发布新消息,它都会将该消息添加到本地缓存中......它永远不会忘记它发送的消息。只要您的订阅客户端重新连接到服务器,它的第二个套接字就会向服务器发送一个请求,以获取它丢失的所有消息(或者,如链接示例的情况,数据的整个当前状态),这些消息将被发送回到第二个插座对。通过这种方式,当用户开始通过普通用户信道获得新消息时,用户可以获得所有消息的最新信息。