1

有一个服务器,它收集一些数据,然后将其发送给客户端。我需要确保客户端获得了服务器发送的数据。我认为这里的 PUB/SUB 模式是最好的选择,但我不明白如何检查客户端是否获取数据?我听说过一些可靠的 PUB/SUB,但没有真正的例子。

有什么想法、建议、例子和帮助吗?

简单的发布者:

import zmq

context = zmq.Context()

server_socket = context.socket(zmq.PUB)
server_socket.bind('tcp://*:5559')

while True:
    server_socket.send('message')

简单订户:

import zmq

context = zmq.Context()

client_socket = context.socket(zmq.SUB)
client_socket.setsockopt(zmq.SUBSCRIBE, '')
client_socket.connect('tcp://localhost:5559')

while True:
    print client_socket.recv()

在此示例中,我需要确保订阅者收到“消息”。

4

2 回答 2

3

在其一般形式中,pubsub不适合您的用例。pubsub 的基本原则之一是发布者和订阅者是分离的。即发布者不应该知道它的订阅者,也不应该受到他们的影响。可能有任意数量的订阅者,包括没有订阅者。

您似乎需要一个订阅者,这打破了这一点。

于 2013-04-28T17:37:10.673 回答
0

ZMQ 指南讨论了如何始终丢弃来自 PUB 套接字的前几条消息,以及如果您想要您正在谈论的可靠性,您需要 SUB 端发送回它收到每条消息的确认。

您可能需要考虑改用 PUSH/PULL 连接。将 PUB 替换为 PUSH,将 SUB 替换为 PULL。也许绑定PUSH端。请参阅:ZMQ 推/拉

于 2013-04-29T21:49:13.733 回答