web-dev-qa-db-fra.com

Puis-je spécifier les informations d'identification RabbitMQ dans node.js?

J'ai commencé à utiliser rabbit.js pour me connecter à RabbitMQ à partir d'une application node.js.

Je suis bloqué à:

Erreur: canal fermé par le serveur: 403 (ACCESS-REFUSED) avec le message "ACCESS_REFUSED - opération non autorisée sur l'échange par défaut"
Sur Channel.C.accept (/.../rabbit.js/node_modules/amqplib/lib/channel.js:398:24)
Sur Connection.mainAccept [as accept] (/.../rabbit.js/node_modules/amqplib/lib/connection.js:63:33)
Sur Socket.go (/.../rabbit.js/node_modules/amqplib/lib/connection.js:448:48)
Sur Socket.EventEmitter.emit (events.js: 92: 17)
...

ce qui est attendu, car l'instance de RabbitMQ que j'utilise est configurée pour obliger les éditeurs et les abonnés à fournir des informations d'identification avant de pouvoir utiliser la file d'attente de messages, et le compte invité est désactivé.

La documentation officielle de rabbit.js n'a aucune mention des informations d'identification. Les recherches de Google pour "rabbit.js spécifient les informations d'identification" et "mot de passe de connexion rabbit.js" n'ont pas été concluantes.

Les informations d'identification sont-elles prises en charge par rabbit.js? Sinon, quels autres clients RabbitMQ pour node.js les prennent en charge?

31
Arseni Mourzenko

Je n'ai donc jamais utilisé rabbit.js moi-même, mais après avoir plongé dans le code, il semble utiliser amqplib . Le code qui l'analyse peut être vu ici et il semble qu'il appelle le nodejs standard module URL . Alors peut-être que vous pouvez essayer quelque chose comme ça :

amqp://user:[email protected]/vhost

J'espère que ça aide!

À votre santé.

45
marcelog

RabbitMQ suit WHATWG URL Standard, c'est-à-dire qu'il faut:

amqp://user:[email protected]:8080

Où:

  • utilisateur: nom d'utilisateur
  • pass: mot de passe
  • sub.example.com:8080: Hôte: PORT

Exemple de code:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://example.username:example.password@localhost', (err, conn) => {});

Cordialement

5
Kartik Nigam
const amqp = require('amqplib/callback_api');

const opt = { credentials: require('amqplib').credentials.plain('user', 'password') };
amqp.connect('amqp://localhost', opt, (err, conn) => {});

//
5
snakemw