Как аутентифицировать rabbitmq в nodejs?

Ошибка: рукопожатие прервано сервером: 403 (ACCESS-REFUSED) с сообщением «ACCESS_REFUSED - вход в систему был отклонен с использованием механизма аутентификации PLAIN. Подробности см. В файле журнала брокера». Я пробовал authMechanism индивидуально ('PLAIN', 'AMQPLAIN', 'EXTERNAL'), но получаю ту же ошибку. Невозможно создать соединение с rabbitMQ

var raabitmqSettings = {
    protocol: 'amqp',
    hostname: '10.250.18.31',
    port: 5672,
    username: 'sam',
    password: 'sam@123',     
    vhost: '/',
    authMechanism: ['PLAIN', 'AMQPLAIN', 'EXTERNAL']
}

amqp.connect(raabitmqSettings, function(err, conn) {
    conn.createChannel(function(err, ch) {
         console.log("\n\n" + ch);
    }   
}

Где я могу увидеть файл журнала в rabbit mq или как включить журналы в rabbitMQ?

Это правильный способ создания связи? Есть ли какие-нибудь настройки на сервере rabbitMQ?


person Samadhan Virkar    schedule 11.07.2018    source источник
comment
Вы проверили журнал RabbitMQ? Вы создали пользователя sam? Каков результат rabbitmqctl authenticate_user sam 'sam@123'   -  person Luke Bakken    schedule 11.07.2018
comment
Этот работает нормально: var open = amqp.connect (raabitmqSettings); open.then (функция (conn) {console.log (conn);}). then (null, console.warn); НО Я ХОЧУ написать async и ждать веселья @LukeBakken - Спасибо   -  person Samadhan Virkar    schedule 16.07.2018
comment
Это больше вопрос javascript, чем вопрос, относящийся к RabbitMQ или клиенту javascript. Теперь, когда кажется, что ваше соединение работает, вы должны отредактировать исходный вопрос, чтобы отразить, в чем вам действительно нужна помощь.   -  person Luke Bakken    schedule 16.07.2018
comment
Этот код работает нормально: var sender = async function(setting) { const open = await amqp.connect(setting); await ch.assertExchange("ExchangeName", "direct"); var q = 'QueueName'; var msg = 'Hello World'; ch.assertQueue(q, { durable: true }); ch.sendToQueue(q, new Buffer(obj)); console.log(" [x] Sent %s", msg);   -  person Samadhan Virkar    schedule 01.08.2018
comment
Спасибо @LukeBakken   -  person Samadhan Virkar    schedule 01.08.2018


Ответы (1)


Используйте следующий код на стороне получателя

const open = await amqp.connect(setting);        
    var ch = await open.createChannel();
    await ch.assertExchange("cronService", "direct");
    var q = 'CronQueue';
    ch.assertQueue(q, { durable: true });
    ch.consume(q, async function(msg) {            
        console.log(" [x] Received %s", msg.content.toString());            
    }, { noAck: true });
    return something;
person Samadhan Virkar    schedule 03.10.2018