发布/订阅 - 订阅非0MQ发布者

时间:2013-04-26 10:31:15

标签: python zeromq

我目前正在尝试使用0MQ创建代理。我想订阅一个没有在0MQ下运行的发布者。我的意思是我有一个发送XML文件的远程发布者的地址和端口,我想获取那些文件。不幸的是,我没有收到来自出版商的任何消息,但它发送的很好。

我正在做的是(在Python中):

context    = zmq.Context(1)
subscriber = context.socket(zmq.SUB)
subscriber.connect(address)
subscriber.setsockopt(zmq.SUBSCRIBE, '') # I want to subscribe any topics

同时,我有一个发布者发送收到的消息(如果它发生):

publisher = context.socket (zmq.PUB)
publisher.bind(publishing_address)

最后,

while True:
    data = subscriber.recv()
    print data
    publisher.send(data)

我测试了我的代理,当我将它连接到0MQ发布者但是当我连接到不起作用的非OMQ发布者时,它可以正常工作。

1 个答案:

答案 0 :(得分:4)

我担心这不可能实现,因为ØMQ is not a neutral carrier

  

ØMQ的新人提出的一个常见问题(我自己问过这个问题)是“我如何在ØMQ中编写XYZ服务器?”例如,“如何在ØMQ中编写HTTP服务器?”这意味着如果我们使用普通套接字来承载HTTP请求和响应,我们应该能够使用ØMQ套接字来做同样的事情,只是更快更好。

     

答案过去是“这不是它的工作原理”。 ØMQ不是中立的载体,它对它使用的传输协议强加了框架。这种成帧与现有协议不兼容,现有协议倾向于使用自己的成帧。例如,通过TCP / IP比较HTTP请求和ØMQ请求。

不同之处:ØMQ只能与ØMQ交谈