小编Bre*_*ell的帖子

为什么 ZMQ 不会丢弃消息?

我有一个应用程序,它使用 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)

python zeromq pyzmq

5
推荐指数
1
解决办法
2267
查看次数

标签 统计

python ×1

pyzmq ×1

zeromq ×1