无法使用channel.get()方法消耗队列中的消息-RabbitMQ Node.js

时间:2020-09-21 06:06:21

标签: node.js rabbitmq

嗨,我无法使用channel.get()从带有Node.js的RabbitMQ中获取消息。

尝试以下代码。请提出一个解决方案。预先感谢。

consumer.js

var amqplib = require('amqplib');

const subscribeMessages = async (queue, conn) => {
    const connection =  await connect();
    var channel = await connection.createChannel();
    await channel.assertQueue('queuename', {durable: true});

    try {
        console.log(" [*] Waiting for messages in %s ", 'queuename'); 
        channel.get(queue, {noAck: false}, function(err, msg) { 
            if (!msg) {
                console.log(" Empty message recieved"); 
                channel.reject(msg, true);
            } else {
                console.log("MSG consumed: ", msg.content.toString());
                channel.ack(msg);
                channel.close();
                conn.close(); 
            }
        });
    } catch (error) {
        console.log(error, 'Failed to consume messages from Queue!')
        conn.close(); 
    }
}

const connect = async () => {
    var amqp_protocol = 'amqp';
    var amqp_hostname = 'xx.xx.xx.xx';
    var amqp_username = 'username';
    var amqp_password = 'password';
    var amqp_port = 5672;

    const con_url = amqp_protocol + "://" + amqp_username + ":" + amqp_password + "@" + amqp_hostname + ":" + amqp_port;

    if (connection == '') {
        connection = await amqplib.connect(con_url);
    } 
     
    return connection;
}

subscribeMessages();

命令:节点consumer.js

0 个答案:

没有答案