Как закрыть соединение rabbitMQ после успешной отправки сообщения, когда я использую amqp.node в node.js

node.js rabbitmq

293 просмотра

1 ответ

6 Репутация автора

В некоторых демонстрациях они закрывают соединение в функции таймера, например:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var q = 'hello';
    var msg = 'Hello World!';

    ch.assertQueue(q, {durable: false});
    ch.sendToQueue(q, new Buffer(msg));
    console.log(" [x] Sent %s", msg);
  });
  setTimeout(function() { conn.close(); process.exit(0) }, 500);
});

Есть ли какой-нибудь метод, чтобы закрыть, connкогда отправить сообщение успешно?

Автор: 帝子登基 Источник Размещён: 19.07.2016 02:52

Ответы (1)


1 плюс

281 Репутация автора

Я закодировал что-то вроде ниже

var q = 'TEST';
var open = require('amqplib').connect('amqp://user:password@localhost:5672');
var sleep = require('sleep');
//Publisher

function publish() {
    let ch;
    var connection;
    let publisher = open.then(function(conn) {
        connection=conn;
        return conn.createChannel();
    }).then(function(chann) {
        ch = chann;
        ch.purgeQueue(q);
        return ch.assertQueue(q,{noCreate: true});
    }).then(function(ok) {
        return ch.sendToQueue(q, new Buffer('HELLO WORLD'),{noAck:true});
    }).then(function(ok) {
        console.log('MESSAGE_SENT', ok);
        return ok; //resolve('MESSAGE_SENT')
    }).then((ok)=>{
        console.log('Assert queue response:', ok);
        setTimeout(function() { connection.close();}, 500);
    })
    .catch(function(err) {
        console.log(err);
        console.error('Unable to connect PUBLISHER');
        process.exit(1);
        //reject('MESSAGE_SENT')
    });

    return publisher;

}

publish();
module.exports = {
    publish
};
Автор: Santhosh Hirekerur Размещён: 20.12.2016 12:27
Вопросы из категории :
32x32