嗨,我无法使用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