我想使用一个套接字使用 Python 中的 ZeroMQ 订阅多个过滤器。
sock.setsockopt(zmq.SUBSCRIBE, 'first.filter')
sock.setsockopt(zmq.SUBSCRIBE, 'second.filter')
但这行不通。仅考虑第一个。然而,我读到了这篇文章零MQ网站 http://api.zeromq.org/2-2:zmq-setsockopt:
多个过滤器可以连接到一个ZMQ_SUB
套接字,在这种情况下,如果消息与至少一个过滤器匹配,则应接受该消息。
我正在使用 zmq 2.2.0.1。所以,我想知道如何做到这一点。有任何想法吗?
这有效:
import time
import zmq
ctx = zmq.Context()
pub = ctx.socket(zmq.PUB)
sub = ctx.socket(zmq.SUB)
url = "tcp://127.0.0.1:5555"
pub.bind(url)
sub.connect(url)
# subscribe to 'a' and 'b'
sub.setsockopt(zmq.SUBSCRIBE, b'a')
sub.setsockopt(zmq.SUBSCRIBE, b'b')
time.sleep(1)
for word in [ 'alpha', 'beta', 'gamma', 'apple', 'carrot', 'bagel']:
pub.send(word)
time.sleep(1)
for i in range(4):
print sub.recv(zmq.NOBLOCK)
给出输出:
alpha
beta
apple
bagel
所以这两种订阅都有效。你的具体代码是什么?因为也许这是另一个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)