数据获取检查PUB / SUB模式

时间:2013-04-28 16:56:02

标签: python zeromq publish-subscribe pyzmq

有一台服务器,它收集一些数据然后将其发送到客户端。我需要确保客户端获取服务器发送的数据。我认为这里的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()

在这个例子中,我需要确保订户获得“消息”。

2 个答案:

答案 0 :(得分:3)

一般来说,pubsub不适合您的用例。 pubsub的基本原则之一是发布者和订阅者解耦。即出版商不应该了解其订阅者,也不应受其影响。可能有任意数量的订阅者,包括没有订阅者。

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

答案 1 :(得分:0)

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

您可能需要考虑使用PUSH / PULL连接。用PUSH替换你的PUB,用PULL替换你的SUB。也许绑定PUSH结束。请参阅:ZMQ PUSH/PULL