如何使用nodejs zeromq库设置双向消息传递通道?

时间:2018-03-05 08:03:44

标签: javascript node.js zeromq

我在https://github.com/zeromq/zeromq.js中看到了如何使用pub / sub模式的示例。

如何将其配置为不只是订阅者接收邮件并处理它们,而是回复其他返回发布者的邮件?

1 个答案:

答案 0 :(得分:0)

鉴于你对的兴趣 - s将会持续更长时间,ZeroMQ的gar with与{ PUB, XPUB, SUB, XSUB, PUSH, PULL, REQ, XREQ, REP, XREP, PAIR }最简单的访问节点行为 - 原型很快就会停止与现实世界相匹配设计需求。

这就是说,在这个时刻最好的一件事就是 - 不要高估内置的琐碎原型(这些作为乐高积木 - 开始时很方便,但如果用于更大的概念则更强大)。

所以, 您可能同时拥有 PUB/SUB 可扩展的正式通信模式,并添加另一个,以便在您的任务中同时提供

// SUB-side_extended_to_TELL_PUB-side_a_word_or_two.js
var zmq  = require('zeromq')
  , sock = zmq.socket('sub')
  , repl = zmq.socket('push');

sock.connect('tcp://127.0.0.1:3000');
repl.connect('tcp://127.0.0.1:3123');

sock.subscribe('kitty cats');
console.log('Subscriber connected to port 3000');

sock.on('message', function(topic, message) {
  console.log( 'INF: Topic-filter:[', topic, '] sent:', message );
  repl.send(   'Got another one' );
  console.log( 'INF: have informed the PUB-side ...' );
});

结语:

在Stack Overflow上花了一些时间的社区成员可能会对这个反复的警告感到恼火,但是,它对所有那些经常或者没有来过这里的人来说都具有不可或缺的信息意义。到目前为止:

REQ/REP 不是一个明智的选择。这种原始的消息传递模式很脆弱,因为它可能会陷入无法解决的相互僵局,因此请注意在真实世界的生产级软件工具中使用它。它可以生活(并经常生活在许多这样的)学校书籍的例子,但至少,你已被警告......