从c使用zeromq时,req套接字不允许发送两次。 现在,zeromq.node允许继续发送,所以我假设zeromq.node在内部缓存其他消息并在提交下一个之前等待答案。
此代码演示了此行为:
var zmq = require('zmq');
var req = zmq.socket('req');
var router = zmq.socket('router');
var tcp = 'tcp://127.0.0.1:3000';
router.on('message', function(source, _, command, data) {
router.send([source, '', data]); // pass through
});
req.connect(tcp).on('message', function(data) {
console.log('receive: ' + data); // acknowledge
});
var i = 0;
while(i < 100)
req.send(['REQ', ++i]); // saved in cache and send later, on bindSync
setTimeout(router.bindSync.bind(router, tcp), 1000);
此缓存似乎没有限制,可以填满整个内存。
有没有办法配置它或将其限制为一定数量的项目/重试?