gpt4 book ai didi

ZeroMQ PUB/SUB - 为什么多个订阅者不起作用?

转载 作者:行者123 更新时间:2023-12-04 08:27:24 26 4
gpt4 key购买 nike

我正在使用 ZeroMQ 来促进我需要的发布/订阅环境。我正在使用 Python(使用 EventLoop)在机器 A 上运行发布服务器,现在我有一个订阅者在机器 B 上以 C++ 运行,第二个订阅者在机器 C 上以 Python(使用 EventLoop)运行。

如果机器 B 在机器 C 之前订阅机器 A,那么 B 会收到订阅的消息,而 C 不会。此外,如果我查看机器 A 上已建立的连接,则只存在机器 B 的连接而不是 C 的连接。如果机器 C 在 B 之前订阅 A,则相反。

这是我的发布者代码:

import zmq
from zmq.eventloop import ioloop, zmqstream

ioloop.install()

context = zmq.Context(1)
socket = context.socket(zmq.PUB)
publisher = zmqstream.ZMQStream(socket)
socket.bind("tcp://*:1337")

def publish():
publisher.send_multipart(("heartbeat", "OHAI"))

ioloop.PeriodicCallback(publish, 5000).start()
ioloop.IOLoop.instance().start()

这是我的 Python 订阅者代码:
import zmq
from zmq.eventloop import ioloop, zmqstream

ioloop.install()

context = zmq.Context(1)
socket = context.socket(zmq.SUB)
subscriber = zmqstream.ZMQStream(socket)
socket.setsockopt(zmq.SUBSCRIBE, "heartbeat")
socket.connect("tcp://pub.local:1337")

def subscription(message):
print "Message Received: %s" % (message[1])

subscriber.on_recv(subscription)
ioloop.IOLoop.instance().start()

为什么我的发布者不接受多个传入的订阅者套接字?可能值得注意的是,多个订阅者在机器 A 上运行时运行良好,但我认为这不是防火墙问题,因为我在禁用防火墙的情况下测试了从 B 和 C 到 A 的订阅者连接。

最佳答案

感谢所有人在原始帖子中提供的所有有用评论。这种行为原来是由于使用的 ZeroMQ 版本不匹配......我的疏忽。

关于ZeroMQ PUB/SUB - 为什么多个订阅者不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com