我发现以下代码通过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模块的所有命令都有一个可选的回调作为最后一个参数。
redis
所以做类似的事情
client.publish('channel', 'message', function(err) { if (err) throw err; });
应该能按预期工作。