【问题标题】:ZMQ pub/sub subscribeZMQ 发布/订阅
【发布时间】:2015-04-27 23:15:05
【问题描述】:

我无法弄清楚如何使用 ZMQ 订阅特定“频道”的发布/订阅功能。

这里是发布者:

var zmq = require('zmq');
var pub = zmq.socket('pub');

pub.bindSync('tcp://127.0.0.1:5555');

setInterval(function(){
    pub.send('pub msg');
},500);

这里是订阅者:

 var sub = zmq.socket('sub');
 sub.connect('tcp://127.0.0.1:5555');

 sub.subscribe('');  //herein lies the question

 sub.on('message',function(msg){
        console.log('Received msg:',msg);
 }

这按原样工作,但问题是如果我将参数更改为 sub.subscribe 到除空字符串 ('') 之外的任何内容,订阅者不会收到来自发布者的任何消息。

如何使用 ZMQ 正确配置发布/订阅?

【问题讨论】:

  • 你的意思是即使你做了sub.subscribe('pub'),你什么也得不到?
  • pub 和 sub 不在同一个文件或程序中...
  • 这实际上并不相关。我的意思是,因为您的发布者发送以字符串“pub”开头的消息,订阅“pub”应该会在订阅者端产生消息。 subscribe 所做的只是在订阅者端设置一个过滤器。

标签: node.js sockets tcp zeromq


【解决方案1】:

sub.subscribe('topic') 为您的订阅者套接字添加一个过滤器,以便您只接收以字符串 topic 开头的消息。您可以通过多次调用来添加多个过滤器。 sub.subscribe('') 删除任何现有过滤器,以便您的订阅者获取发布者发送的所有消息。

在您的代码中使用sub.subscribe('pub') 会在订阅者端产生消息。

zeromq.node GitHub 中的 pub/sub example 是了解订阅如何工作的好地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多