web-dev-qa-db-ja.com

node.jsでRabbitMQ資格情報を指定できますか?

Node.jsアプリケーションからRabbitMQに接続するためにrabbit.jsを使い始めました。

私は次の場所でブロックされています:

エラー:サーバーによってチャネルが閉じられました:403(ACCESS-REFUSED)メッセージ "ACCESS_REFUSED -operation not allowed on the default exchange"が表示される
Channel.C.accept(/.../rabbit.js/node_modules/amqplib/lib/channel.js:398:24)
at Connection.mainAccept [as accept](/.../rabbit.js/node_modules/amqplib/lib/connection.js:63:33)
Socket.go(/.../rabbit.js/node_modules/amqplib/lib/connection.js:448:48)
Socket.EventEmitter.emit(events.js:92:17)
...

私が使用するRabbitMQのインスタンスは、メッセージキューを使用する前にパブリッシャーとサブスクライバーに資格情報を提供するように要求するように構成されており、ゲストアカウントが無効になっているため、これは予想されます。

rabbit.jsの公式ドキュメント には資格情報の記載がありません。 「rabbit.js資格情報を指定する」と「rabbit.jsログインパスワード」をGoogleで検索すると、決定的ではありませんでした。

資格情報はrabbit.jsでサポートされていますか?そうでない場合、node.jsの他のRabbitMQクライアントはそれらをサポートしていますか?

31

自分でrabbit.jsを使用したことはありませんが、コードに飛び込んだ後は amqplib を使用しているようです。それを解析するコードは here で見ることができ、標準のnodejs RL module を呼び出しているようです。おそらくあなたは何かを試すことができます これのように

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

それが役に立てば幸い!

乾杯。

45
marcelog

RabbitMQはWHATWG URL Standardに従います。つまり、次のようになります。

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

どこ:

  • user:ユーザー名
  • pass:パスワード
  • sub.example.com:8080:Host:PORT

サンプルコード:

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

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

よろしく

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