希望在我使用node.js构建的小型Web应用程序中使用消息队列。我看了resque但不确定是否合适。目标是通过socketio基于后端和其他客户端操作将通知推送到客户端。我可以用socketio做到这一点,但我认为可能一个正确的消息队列会使这个更清洁,我不必重新发明轮子。
有哪些选择?
答案 0 :(得分:47)
您可以将redis与快速node_redis客户端一起使用。它甚至内置pubsub语义。
答案 1 :(得分:12)
您可以使用节点STOMP client。这将允许您与各种消息队列集成,包括:
我之前没有使用过这个库,所以我不能保证它的质量。但STOMP是一个非常简单的协议,所以我怀疑你可以在必要时将其破解为提交。
另一种选择是使用beanstalkd with node。 beanstalkd是一个用C编写的非常快速的“任务队列”,如果你不需要上面列出的代理的功能灵活性,这是非常好的。
答案 2 :(得分:10)
无耻的插件:我正在研究Bokeh:一个基于ZeroMQ构建的简单,可扩展且超快的任务队列。它支持用于持久化任务的可插拔数据存储,目前在内存中,支持Redis和Riak。看看吧。
答案 3 :(得分:9)
以下是我可以提出的一些建议:
node-amqp:我已成功与Socket.IO结合使用的RabbitMQ客户端,可以制作实时多人游戏和聊天应用程序等。似乎足够可靠。
zeromq.node:如果你想沿着非经纪路线走下去,这可能值得一看。更多工作来实现功能,但您更有可能获得更低的延迟和更高的吞吐量。
答案 4 :(得分:8)
查看node-busmq - 它是由redis支持的生产级,高可用性和可扩展的消息总线。
我为我们的全球云编写了这个模块,它目前在我们的生产环境中部署在世界各地的几个数据中心。它支持命名队列,点对点通信,保证传递和联合。
有关我们创建此模块的原因的更多信息,请阅读此博文:All Aboard The Message Bus
答案 5 :(得分:6)
kue是您唯一需要的消息队列
答案 6 :(得分:5)
我建议尝试Kestrel,它像Beanstalk一样快速而简单但支持扇出队列。讲memcached。它是使用Scala构建的,并在Twitter上使用。
答案 7 :(得分:3)
答案 8 :(得分:1)
我和你描述的socketIO一样使用了KUE。 我将socketID与作业一起存储,然后可以在作业完成中检索它。 KUE基于redis并且good examples on github
像这样......jobs.process('YourQueuedJob',10, function(job, done){ doTheJob(job, done); }); function doTheJob(job, done){ var socket = io.sockets.sockets[job.data.socketId]; try { socket.emit('news', { status : 'completed' , task : job.data.task }); } catch(err){ io.sockets.emit('news', { status : 'fail' , task : job.data.task , socketId: job.data.socketId}); } job.complete(); }
答案 9 :(得分:1)
看看node-queue-lib。也许这对你来说已经足够了。 它支持node.js和浏览器。有两种传递策略:广播和循环。 只有javascript。
快速举例:
var Queue = require('node-queue-lib/queue.core');
var queue = new Queue('Queue name', 'broadcast');
// subscribe on 'Queue name' messages
queue.subscribe(function (err, subscriber) {
subscriber.on('error', function(err){
//
});
subscriber.on('data', function (data, accept) {
console.log(data);
accept(); // accept process message
});
});
// publish message
queue.publish('test');
答案 10 :(得分:1)
Azure ServiceBus怎么样?它支持nodejs。
答案 11 :(得分:0)
您可能还想查看ewd-qoper8:https://github.com/robtweed/ewd-qoper8