5

node-amqpライブラリを使用してオンラインの stomp サービスに接続しています。 stomp-clientを使用する前は、非常に正常に接続されていましたが、自動障害検出と再接続はサポートされていないため、次のように切り替えたいと考えています。より堅牢なサポートのための node-amqp。

var amqp = require('amqp');
var option = { 
  host: 'host'
, port: 61618
, login: 'my username'
, password: 'my password'
};

var implOpts = {
      reconnect: true,
      reconnectBackoffStrategy: 'exponential',
      reconnectBackoffTime: 500
};

var connection  = amqp.createConnection(option,implOpts);
connection.addListener('ready', function(){
    console.log('ready connection ');

});

connection.on('error', function (error) {
    console.log('Connection error' ,error);

});

connection.on('close', function () {
    console.log('Connection close ');

});

ホスト名、パスワード、ユーザー名、およびポートが正しく、stomp-client ライブラリの例で機能しています。ただし、上記のコードを使用すると、接続エラー {メッセージ:「接続が終了しました: 認証エラーが原因である可能性があります。」というエラーが表示されました。} . コードを調べたところ、認証やコードに関する問題は見つかりませんでした。

これは、stomp-client ライブラリの作業コードです。

var StompClient = require('stomp-client').StompClient;

var client = new StompClient('host', 61618, 'my username', 'my password', '1.0');

client.connect(function(sessionId) {
   console.log('Trying to connect the real time service...');

}); 

node-amqp を使用して Stomp サービスに接続する方法を教えてください。

4

1 に答える 1

0

これに対する答えが見つかったかどうかはわかりませんが、私はこの問題に頭を悩ませ、Google 検索の上部近くにヒットしたので、発見を共有したいと思いました:

簡単な情報;

  • ウサギMQ 3.5.6
  • ノードJS 6.2.2
  • amqplib 0.4.2

掘り下げた後、github でプロジェクトを見つけ、テストを掘り下げてhttps://github.com/squaremo/amqp.node/blob/master/test/connect.jsを見つけました。これには、単純な認証の例があります。私が見つけた重要な点は、特別な関数を呼び出して資格情報をフォーマットし、それらをオブジェクトとして渡す必要があるということでした:

var credentials = require('amqplib/lib/credentials');
var options = {};
options.credentials = credentials.plain(configuration.rabbitmq.user, configuration.rabbitmq.pass);
amqp.connect(connstr, options ....

ユーザー名とパスワードを URL に埋め込むことについても言及されていました。

amqp://user:pass@server:port

ただし、これは私の場合はうまくいきませんでした。

于 2016-08-18T05:49:50.340 に答える