У меня есть несколько узлов, которые будут использовать вторичный сервис, чтобы получать информацию об адресе друг друга.Я хочу иметь возможность публиковать информацию, чтобы все остальные узлы могли ее слышать.Использование сокета XPUB
- это не вариант, который я хотел бы использовать здесь, так как я хочу, чтобы эта система распространялась.
То, что я пробовал, это то, что суммирует до:
1 Создание сокета PUB
,
def pub_stream(self):
self.pub = self.context.socket(zmq.PUB)
self.pub.bind(self.endpoint)
2 Создание потока SUB
,
def sub_stream(self):
ioloop = IOLoop.instance()
socket = self.context.socket(zmq.SUB)
self.sub_stream = ZMQStream(socket, ioloop)
self.sub_stream.on_recv(self.on_message)
self.subs_stream.setsockopt(zmq.SUBSCRIBE, self.topic)
3 В какой-то момент получить адреса всех других узлов и подключиться к ним,
# close and restart sub_stream to get rid of any previous connections
for endpoint in endpoints:
self.sub_stream.connect(endpoint)
Хотя сообщения обратного вызова on_message
не передаются.Правильно ли то, что я делаю, если нет, то как лучше сделать то, чего я хочу достичь?