发布者和订阅者不在负面场景中工作

时间:2013-10-21 14:13:50

标签: node.js zeromq publish-subscribe

您好我在我的节点应用程序中使用zeroMQ,我使用发布者和订阅者进行消息排队。这是我的代码

Publisher.js

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

publisher.bind('tcp://127.0.0.1:7000', function(err) {
    if(err)
        console.log(err)
    else
        console.log("Listening on 7000...")
})

setTimeout(function() {
    console.log('sent');
    publisher.send("hi")
}, 1000)

process.on('SIGINT', function() {
    publisher.close()
    console.log('\nClosed')
})

Subscriber.js

var zmq = require('zmq')
var subscriber = zmq.socket('sub')

subscriber.on("message", function(reply) {
    console.log('Received message: ', reply.toString());
})

subscriber.connect("tcp://localhost:7000")
subscriber.subscribe("")

process.on('SIGINT', function() {
    subscriber.close()
    console.log('\nClosed')
})

如果发布者和订阅者都在运行,上面的代码工作正常。如果我停止我的订阅者,当订阅者离线时我无法接收发布者的数据。即使我的订阅者是,我也希望保留数据我被困在这里。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

请参阅zmq docs网站上的“Last value caching”模式。您可以扩展示例,客户端首先使用它收到的最新项目订阅模式,然后使用lvc代理重新发送缺少的值(必须首先缓存它们)。但这可能适用于少量缓存项目,其中很少发生断开连接,否则PUSH可能是更好的选择。 PUB-SUB不支持缓冲。