【问题标题】:Pub/ Sub - Subscribing to a non-0MQ publisherPub/Sub - 订阅非 0MQ 发布者
【发布时间】:2013-04-26 10:31:15
【问题描述】:

我目前正在尝试使用 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 发布者时。

【问题讨论】:

    标签: python zeromq


    【解决方案1】:

    恐怕这无法实现,因为ØMQ is not a neutral carrier:

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

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

    换一种说法:ØMQ只能与ØMQ对话

    【讨论】:

    • 值得指出的是,OP 可以编写一个“自定义订阅者 + ZMQ 发布者”节点,将外部发布者引入 ZMQ 网络。
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多