2013-04-04 5 views
4

Я использую библиотеку node-amqp для подключения к онлайновой службе stomp, прежде чем я использовал stomp-client, она была подключена очень успешно, но она не поддерживает автоматическое обнаружение сбоев и повторное подключение, поэтому я хочу переключиться на node-amqp для более надежной поддержки.Ошибка аутентификации при работе с библиотекой node-amqp при переключении на stomp-client, работает

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. Однако, работая с вышеприведенным кодом, я получил сообщение об ошибке {message: «Соединение завершено: возможно, из-за сбоя аутентификации». }. Я просмотрел код, не нашел проблем с моей аутентификацией и кодом.

Вот рабочий код в библиотеке 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...'); 

}); 

может кто-нибудь сказать мне, как работать с узлом-AMQP для подключения Stomp Service

ответ

0

Не уверен, что если вы нашли ответ на этот вопрос, но я обнаружил, что бить головой по этой проблеме и ударил этого вблизи в верхней части поиска 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:[email protected]:port 

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