我有一个系统,其中有一个订阅者,订阅了多个发布者:
订户代码
sub_socket.bind(zmq.SUB,"address:port1")
sub_socket.bind(zmq.SUB,"address:port2")
sub_socket.bind(zmq.SUB,"address:port3")
和发布商代码
process 1:
pub_socket1.connect(zmq.PUB,"address:port1")
process 2:
pub_socket2.connect(zmq.PUB,"address:port2")
process 3:
pub_socket3.connect(zmq.PUB,"address:port3")
进程1以100 msg / sec发送消息,进程2以~50 msg / sec发送消息,进程3以每小时发送消息1。
我注意到在运行一段时间后,我看到用户卡住了,即它没有收到消息。
如果我重新启动系统,它会正常工作。
我正在使用PYZMQ 14.7
问题 1 :
我正在以上述方式使用单个订阅者和多个发布者。这是正确的方式吗?
问题 2 :
我知道 HWM
限制,我不确定我发送的消息是否会导致这种情况。
是否有人在pyzmq
看到了这样的问题?
答案 0 :(得分:1)
ZeroMQ
支持多个 .bind()
-s。这不是根本问题。
ZeroMQ对指示的流量没有问题。如果有疑问,请重新设计您的系统,以便进行一些自我诊断监控。
process 1
以100 msg / s发送消息,
process 2
~50 msg / s
process 3
每小时发送一条消息。
为您提供充足的空间来添加智能自我诊断功能。
可能从看门狗计时器开始,以检测消息流似乎在观察者侧以及process 3
, .close()
和的确切停止时间每封邮件都.connect()
,并检查哪些传入的邮件流停止在观察者端显示。