我找到了以下代码实现了一个异步消息队列(实际上没有队列,只有文件)与ZeroMQ和Node.js
setInterval(function() { var value = { id: i++, date: new Date() }; WriteFile(value.id + ".dat", value); client.send(value, function(result) { console.log(value, result); DeleteFile(value.id + ".dat"); }); }, 10000);
代码来自这里.
"WriteFile"和"DeleteFile"函数稍后在代码中定义,但没有什么特别之处.
函数"client.send"也在另一个文件中定义,其中定义了回调.很明显,当消息传输成功时,ZeroMQ提供了一个回调.
现在我想做这样的事情,但为了简单起见,使用Redis pubsub而不是ZeroMQ.据我了解,node_redis模块的"发布"功能没有回调.
我的问题是,有没有办法实现这样的东西?我非常喜欢编写文件然后在传输完成时删除它们的想法,但我希望它能在Redis中完成.我知道我正在抓稻草,但如果有人有任何想法,我会很乐意听.
所有redis
模块的命令都有一个可选的回调作为最后一个参数.
所以做类似的事情
client.publish('channel', 'message', function(err) { if (err) throw err; });
应该按预期工作.