我正在尝试从rabbitmq 中提取一条消息,对其进行处理并确认该单条消息。在确认将消息从队列中拉出后,我不希望它继续。如果我在下面的代码中不执行 ch.close(),它会在确认上一条消息后继续提取消息。
使用 docker RabbitMQ 实例,我设置了此代码(有效),但我很好奇快速打开/关闭通道是否是执行此操作的最佳方法:
amqp.connect('amqp://guest:guest@localhost', (err, conn) => {
conn.createChannel((err, ch) => {
if (err) {
console.error(err);
} else {
let q = 'my queue';
ch.prefetch(1);
ch.consume(q, data => {
console.log(data.content.toString());
ch.ack(data);
ch.close();
returnData = data;
});
}
});
});