我目前正在尝试使用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发布者时,它可以正常工作。
答案 0 :(得分:4)
我担心这不可能实现,因为ØMQ is not a neutral carrier:
ØMQ的新人提出的一个常见问题(我自己问过这个问题)是“我如何在ØMQ中编写XYZ服务器?”例如,“如何在ØMQ中编写HTTP服务器?”这意味着如果我们使用普通套接字来承载HTTP请求和响应,我们应该能够使用ØMQ套接字来做同样的事情,只是更快更好。
答案过去是“这不是它的工作原理”。 ØMQ不是中立的载体,它对它使用的传输协议强加了框架。这种成帧与现有协议不兼容,现有协议倾向于使用自己的成帧。例如,通过TCP / IP比较HTTP请求和ØMQ请求。
不同之处:ØMQ只能与ØMQ交谈。