¿Cuáles son las buenas opciones de cola de mensajes para nodejs?

Buscando usar una cola de mensajes en una pequeña aplicación web que estoy creando con node.js. Miré a resque pero no estoy seguro de que sea apropiado. El objective es enviar notificaciones a los clientes según el backend y otras acciones del cliente con socketio. Podría hacer esto solo con socketio, pero pensé que tal vez una cola de mensajes adecuada haría esto más limpio y no tendría que reinventar la rueda.

¿Cuáles son las opciones que hay?

puedes usar redis con el cliente lightning node_redis . Incluso ha incorporado semántica pubsub .

Podrías usar el nodo STOMP del cliente . Esto le permitiría integrarse con una variedad de colas de mensajes que incluyen:

  • ActiveMQ
  • RabbitMQ
  • HornetQ

No he usado esta biblioteca antes, así que no puedo responder por su calidad. Pero STOMP es un protocolo bastante simple, así que sospecho que puede piratearlo y enviarlo si es necesario.

Otra opción es usar beanstalkd con nodo . beanstalkd es una “cola de tareas” muy rápida escrita en C que es muy buena si no necesita la flexibilidad de características de los corredores mencionados anteriormente.

Enchufe descarado: estoy trabajando en Bokeh : una cola de tareas simple, escalable y ultrarrápida construida en ZeroMQ. Admite almacenes de datos conectables para tareas persistentes, actualmente en memoria, se admiten Redis y Riak. Echale un vistazo.

Eche un vistazo a node-busmq : es un bus de mensajes escalable, de alta disponibilidad y grado de producción respaldado por redis.

Escribí este módulo para nuestra nube global y actualmente se implementa en nuestro entorno de producción en varios centros de datos en todo el mundo. Admite colas con nombre, comunicación de igual a igual, entrega garantizada y federación.

Para obtener más información sobre por qué creamos este módulo, puede leer esta publicación del blog: Todos a bordo del Bus de mensajes

Aquí hay un par de recomendaciones que puedo hacer:

node-amqp : un cliente RabbitMQ que he usado con éxito en combinación con Socket.IO para hacer una aplicación de juego y chat para múltiples jugadores en tiempo real, entre otras cosas. Parece lo suficientemente confiable.

zeromq.node : Si desea ir por la ruta no intermediada, puede que valga la pena echarle un vistazo. Más trabajo para implementar la funcionalidad, pero es más probable que obtenga una menor latencia y un mayor rendimiento.

Recomiendo probar Kestrel , es rápido y simple como Beanstalk pero admite colas de fanout. Habla memcached. Está construido usando Scala y se usa en Twitter.

kue es la única cola de mensajes que necesitarías

Es posible que desee echar un vistazo a

Redis Simple Message Queue para Node.js

Que utiliza Redis y ofrece la mayoría de las características de Amazons SQS.

Usé KUE con socketIO como lo describiste. Almacené el socketID con el trabajo y luego podría recuperarlo en el trabajo completo. KUE se basa en redis y tiene buenos ejemplos en github

algo como esto….

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(); } 

Mira en node-queue-lib . Quizás sea suficiente para ti. Es compatible con node.js y navegadores. Tiene dos estrategias de entrega: broadcast y round-robin. Sólo javascript.

Ejemplo rápido:

 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'); 

¿Qué hay de Azure ServiceBus? Es compatible con nodejs.

Es posible que también desee revisar ewd-qoper8: https://github.com/robtweed/ewd-qoper8

    Intereting Posts