有一台服务器,它收集一些数据然后将其发送到客户端。我需要确保客户端获取服务器发送的数据。我认为这里的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()
在这个例子中,我需要确保订户获得“消息”。
答案 0 :(得分:3)
一般来说,pubsub不适合您的用例。 pubsub的基本原则之一是发布者和订阅者解耦。即出版商不应该了解其订阅者,也不应受其影响。可能有任意数量的订阅者,包括没有订阅者。
您似乎需要一个订阅者,这打破了这一点。
答案 1 :(得分:0)
ZMQ指南讨论了如何始终丢弃来自PUB套接字的前几条消息,以及如果您想要所谈论的可靠性,您需要SUB端发回一条确认信息,表明它收到了每条消息
您可能需要考虑使用PUSH / PULL连接。用PUSH替换你的PUB,用PULL替换你的SUB。也许绑定PUSH结束。请参阅:ZMQ PUSH/PULL