如何让PULL无法从推送器转发?
在下面的示例中,如果我取消注释// throw ...以在每个收到的消息上触发异常,则所有PULL消息都会失败,但是当我放回注释时,所有这些消息都会丢失而不会重新传输推动者。
如果PULL方法失败,如何确保推送器重新传输消息?
P.S。以下代码是在nodejs之上的Meteor框架中的JavaScript,但它与问题无关,因为我认为它在每个zmq实现中都是类似的。
var zmq = Npm.require(modulePath + '/zmq');
var sock = zmq.socket('pull');
sock.identity = 'receiving' + process.pid;
sock.bind('tcp://172.17.4.25:5551', function(err) {
if (err) throw err
if (debug) console.log('Listening for ZMQ messages')
});
sock.on('message', Meteor.bindEnvironment(function(data) {
// throw { name: 'MessagePullFailed', message: 'Failing Pull message to check if ZMQ can recover from it' }
var jsondata = JSON.parse(data)
if (jsondata.cmd == 'upsert') {
jsondata['set']['utctime'] = new Date(jsondata['set']['utctime'])
Mon.upsert({_id: jsondata._id}, {'$set': jsondata['set']}, function(err) {
if (err) console.log(err)
})
}
}))