Ошибка аутентификации при работе с библиотекой 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
Однако это не сработало для моего случая.