Python中的ZeroMQ和多个订阅过滤器

2024-05-17 03:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python中使用ZeroMQ订阅多个过滤器,使用一个套接字。

sock.setsockopt(zmq.SUBSCRIBE, 'first.filter')
sock.setsockopt(zmq.SUBSCRIBE, 'second.filter')

但这不管用。只考虑第一个。不过,我是在zeromq site上读到这篇文章的:

Multiple filters may be attached to a single ZMQ_SUB socket, in which case a message shall be accepted if it matches at least one filter.

我用的是zmq 2.2.0.1。所以,我想知道怎么做。有什么想法吗?


Tags: 过滤器sitebezmqmultiplefiltersubscribefilters
1条回答
网友
1楼 · 发布于 2024-05-17 03:42:12

这是有效的:

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

所以这两个订阅都有效。你的确切密码是什么?因为也许这是另一个问题。

相关问题 更多 >