web-dev-qa-db-fra.com

amqp vs amqplib - Quelle bibliothèque client amqp Node.js est la meilleure?

Quelles sont les différences entre ces bibliothèques clientes amqp? Quelle est la plus recommandée? Quelles sont les principales différences?

39
Javier del Saz

Je recommanderais amqp.node et bramqp over node-amqp. node-amqp a beaucoup de bugs et est mal entretenu. Il cache le concept de "channel" qui introduit beaucoup de problèmes pour les serveurs rabbitmq (car ils ne sont jamais fermés). 

47
Carl Hörberg

Je suis le gars qui a écrit la bibliothèque bramqp. Je vais donc admettre dès le départ que je suis peut-être un peu partial. : P 

À mon avis, aussi longtemps que vous connaissez la spécification, bramqp devrait fonctionner correctement. Sinon, utilisez amqp.node


Vous trouverez ci-dessous les bibliothèques amqp disponibles pour node.js. 

amqplib/amqp.node - style de promesse, toujours à jour, a l'air plutôt stable et facile

bramqp - fournit un accès de bas niveau complet aux fonctions AMQP, non recommandé pour le démarrage

amqp-coffee - implémentation de coffeescript similaire à amqp/node-amqp

amqp/node-amqp - API fixe, populaire, non mise à jour aussi souvent, quelques bugs impairs, stable mais limitée


Les bibliothèques suivantes utilisent l’une des bibliothèques précédentes, tout en offrant une interface plus facile à utiliser ou en ajoutant des fonctionnalités.

rabbit.js utilise amqplib/amqp.node

wascally utilise amqplib/amqp.node

amq utilise amqplib/amqp.node

amqpea utilise bramqp

easy-amqp utilise amqp/node-amqp

rabbus utilise wascally


Je vais aussi ajouter node-amqp10 séparément, car il peut se connecter aux serveurs amqp 1.0. 

S'il y a plus que je devrais ajouter, faites le moi savoir.

42
bakkerthehacker

J'ai utilisé les deux pendant un moment. À première vue, il semblerait que node-amqp (amqp) soit plus approprié, mais il contient en fait tellement de bogues et personne ne les corrige. Par exemple, 

  1. Les adaptateurs MQTT et STOMP de RabbitMQ devraient permettre la communication entre les clients utilisant ces 2 protocoles et les clients utilisant AMQP, mais node-amqp ne parvient pas à analyser les messages envoyés par MQTT ou STOMP, contrairement à amqp.node (amqplib).
  2. node-amqp (amqp) a implémenté la reconnexion automatique et ne lève donc pas d'exceptions lors d'une déconnexion accidentelle. Cela signifie que vous serez obligé d'utiliser la reconnexion intégrée, vous ne pouvez pas détecter la déconnexion et vous en occuper vous-même. Cependant, sa reconnexion double toujours le nombre de connexions. Cela finira par épuiser le client et le serveur. Je préfère coder ma propre fonction de reconnexion avec amqp.node (amqplib).

Je l’ai testé avec un courtier fourni par www.robomq.io, c’est un bon choix, la responsabilité en incombe donc à la bibliothèque. Implémenter une bibliothèque parfaite dans Node.js est difficile. 

Soit dit en passant, vous pouvez trouver un exemple complet de code utilisant amqp.node (amqplib) dans 5 scénarios à l’adresse https://github.com/robomq/robomq.io/tree/master/sdk/AMQP/Node. js et la documentation sur http://robomq.readthedocs.org/en/latest/one-one/#nodejs .

2
EaminZ

J'ai utilisé node-amqp

npm install amqp

C'est celui recommandé par RabbitMQ c'est pourquoi je l'utilise depuis longtemps. De ce que je faisais, ce module est plus sec et lisible par rapport aux autres bibliothèques que j'ai vues.

2
sheldonk

https://github.com/guidesmiths/rascal#rascal mérite également une mention. Il repose sur amqplib et dispose d'un ensemble de fonctionnalités utiles telles que la logique de reconnexion automatique, la souscription/publication basée sur la configuration et un support efficace pour TDD.

0
cressie176

Je viens de commencer à apprendre le lapin moi-même. J'ai trouvé sur d'autres blogs que ampq.node est bien accepté. Un autre que j'ai trouvé (non testé) provient de wascally. https://github.com/LeanKit-Labs/wascally

0
Flexpadawan