我有一个应用程序,它使用 PUB/SUB 设置从 ZeroMQ 发布者获取消息。阅读器有时很慢,所以我在发送方和接收方都设置了 HWM。我希望接收器会填充缓冲区并在从处理速度变慢中恢复时跳转以赶上。但我观察到的行为是它永远不会下降!ZeroMQ 似乎忽略了 HWM。难道我做错了什么?
这是一个最小的例子:
发布者.py
import zmq
import time
ctx = zmq.Context()
sock = ctx.socket(zmq.PUB)
sock.setsockopt(zmq.SNDHWM, 1)
sock.bind("tcp://*:5556")
i = 0
while True:
sock.send(str(i))
print i
time.sleep(0.1)
i += 1
Run Code Online (Sandbox Code Playgroud)
订阅者.py
import zmq
import time
ctx = zmq.Context()
sock = ctx.socket(zmq.SUB)
sock.setsockopt(zmq.SUBSCRIBE, "")
sock.setsockopt(zmq.RCVHWM, 1)
sock.connect("tcp://localhost:5556")
while True:
print sock.recv()
time.sleep(0.5)
Run Code Online (Sandbox Code Playgroud)