【发布时间】:2018-02-15 14:47:31
【问题描述】:
我正在尝试从 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;
});
}
});
});
【问题讨论】:
-
想知道这对于 codereview.stackexchange.com 是否是一个更好的问题
-
也在那里转贴,很好奇是否有人解决了这个问题。它“有效”,但似乎必须有比每次拉消息时关闭频道更好的方法(也许是这样)。
标签: javascript node.js rabbitmq node-amqplib