【发布时间】:2014-11-24 14:51:07
【问题描述】:
我已经使用 zmq 4.0.4 实现了一个简单的 ZeroMQ Pub/Sub 架构。一切正常,sub 接收来自 pub 的消息。
一切都很好,我很高兴喝了很多啤酒。
但是 .. 让 sub 和 pub 通过不可靠的网络连接闲置 24 小时后,sub 无法从 pub 接收任何消息。在与 pub 连接后,我可以通过暂时阻止 sub 与 pub 的连接端口来重现该问题。 sub 不仅在防火墙后丢失了所有消息(预计由于 pub/sub 的性质),而且此后它也未能从 pub 接收任何消息。
发布了一个类似的(但旧的)问题,实际上在发生这种情况时让 sub 抛出异常。但似乎是一个已修复的错误。 ZMQ Pub-Sub Program Failure When Losing Network Connectivity
没有实现心跳来确定连接是否被切断,当与 pub 的连接被切断时,有没有办法让 sub 自动重新连接?
【问题讨论】:
-
如果它不是自动重新连接,那么您唯一的其他选择就是心跳。重新连接应该是 ZMQ 套接字的“魔法”的一部分,如果它没有发生,那么某处就会掉下来。
-
实现了心跳,它就像一个魅力..但是我很惊讶 ZMQ 在无法重新连接时不会抛出错误(或事件)
-
ZMQ 在很大程度上是一个用于构建通信系统的工具集,而不是一个完整的通信系统本身,所以毫无疑问,这被视为开发人员而不是库的责任......但是,这是一个相当开放的社区,所以如果有人想将此功能添加到库中,它可能会在那里:)
标签: zeromq