为什么ZeroMQ SUB缺少消息?

问题描述

我每台计算机建立了约12000个订阅者,线程如下:

订户端:

def client(id):

    context=zmq.Context()
    subscriber=context.socket(zmq.SUB)
    subscriber.connect('ip:port')
    subscriber.setsockopt(zmq.SUBSCRIBE,(id+'e').encode())

    while 1:
        signal=subscriber.recv_multipart()
    
        write logs...
    

for i in range(12000):
    threading.Thread(target=client,args=(str(i+j*12000),)).start()

#j is arbitrary unduplicated int

发布者方面:

subscriber=zmq.Context().socket(zmq.PUB)
subscriber.bind('tcp://*:port')
while 1:
    for id in client_id:
        subscriber.send_multipart([(id+'e').encode()]+[message])

当我使用多台计算机(通过使用不同的j)来建立用户时,有时某些用户根本无法接收消息。

如果我重新启动订户,则那些无法接收消息的用户将恢复正常。但是那些正常的人变得无法接收消息。

这些问题不会显示任何错误,只能在我的日志中找到。

连接过多是否会发生此问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)