Ошибка аутентификации при работе с библиотекой node-amqp при переключении на stomp-client, работает

Я использую библиотеку 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

1 ответ

Не уверен, что вы нашли ответ на этот вопрос, но я обнаружил, что бьюсь головой об этой проблеме и попал в верхнюю часть поиска Google, поэтому решил, что поделюсь своим открытием:

Немного Краткой Информации;

  • RabbitMQ 3.5.6
  • NodeJS 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

Однако это не сработало для моего случая.

Другие вопросы по тегам