node examples example assertqueue node.js rabbitmq amqp

node.js - examples - rabbitmq javascript client



amqp vs amqplib: ¿qué biblioteca de cliente de Node.js amqp es mejor? (6)

¿Cuáles son las diferencias entre esas bibliotecas amqp cliente? ¿Cuál es el más recomendado? ¿Cuáles son las principales diferencias?


Acabo de empezar a aprender rabbitmq yo mismo. He encontrado en otros blogs que ampq.node es bien aceptado. Otra que encontré (no probada) es de tipo wascally. https://github.com/LeanKit-Labs/wascally


He estado usando node-amqp

npm install amqp

Este es el recomendado por RabbitMQ y es por eso que lo he estado usando. Por lo que he estado haciendo, este módulo es más seco y legible en comparación con las otras bibliotecas que he visto.


Recomendaría amqp.node y bramqp sobre node-amqp. node-amqp tiene muchos errores y está mal mantenido, y oculta el concepto de "canal" que presenta muchos problemas para los servidores rabbitmq (porque nunca se cierran).


Soy el tipo que escribió la biblioteca bramqp. Así que voy a admitir desde el comienzo que puedo ser un poco parcial. :PAG

En mi opinión, siempre que conozca las especificaciones, bramqp debería funcionar bien. De lo contrario, use amqp.node

Las siguientes son las bibliotecas amqp disponibles para node.js.

amqp.node - estilo prometedor, aún actualizado, se ve bastante estable y fácil

bramqp : proporciona un acceso completo de bajo nivel a las funciones de AMQP, no recomendado para comenzar

amqp-coffee : implementación de coffeescript similar a amqp / node-amqp

amqp / node-amqp - popular, API fija, no actualizada con tanta frecuencia, algunos errores extraños, estables pero limitados

Las siguientes bibliotecas utilizan una de las bibliotecas anteriores, mientras que proporcionan una interfaz más fácil de usar o agregan características

rabbit.js usa amqplib / amqp.node

github.com/LeanKit-Labs/wascally usa amqplib / amqp.node

amq usa amqplib / amqp.node

amqpea usa bramqp

easy-amqp usa amqp / node-amqp

rabbus usa wascally

También voy a agregar node-amqp10 separado, ya que se puede conectar a servidores amqp 1.0.

Si hay algo más que deba agregar, házmelo saber.


Usé ambas por un tiempo. A primera vista, podría parecer que node-amqp (amqp) es más adecuado, pero en realidad tiene tantos errores y nadie los está solucionando. Por instancias,

  1. El adaptador MQTT y STOMP de RabbitMQ debe permitir la comunicación entre clientes que usan esos 2 protocolos con clientes que usan AMQP, pero node-amqp simplemente no analiza los mensajes enviados por MQTT o STOMP, mientras que amqp.node (amqplib) puede hacerlo.
  2. node-amqp (amqp) ha implementado la reconexión automática y no arroja excepciones sobre la desconexión accidental. Eso significa que se verá obligado a utilizar la reconexión incorporada, no podrá detectar la desconexión y manejarlo usted mismo. Sin embargo, su reconexión siempre duplica el número de conexiones. Agotará tanto al cliente como al servidor eventualmente. Prefiero codificar mi propia función de reconexión con amqp.node (amqplib).

Lo probé con un agente proporcionado por www.robomq.io, es uno bueno así que la culpa debería ser de la biblioteca. Implementar una biblioteca perfecta en Node.js es difícil.

Por cierto, puede encontrar un conjunto completo de código de ejemplo usando amqp.node (amqplib) en 5 escenarios en https://github.com/robomq/robomq.io/tree/master/sdk/AMQP/Node.js y la documentación en http://robomq.readthedocs.org/en/latest/one-one/#nodejs .


https://github.com/guidesmiths/rascal#rascal vale la pena mencionar también. Está construido sobre amqplib y tiene un conjunto de características útiles como lógica de reconexión automática, suscripción / publicación basada en la configuración y buen soporte para TDD.