Javascript 如何在NodeJS中逐个使用RabbitMQ中的消息?

Javascript 如何在NodeJS中逐个使用RabbitMQ中的消息?,javascript,node.js,rabbitmq,Javascript,Node.js,Rabbitmq,默认情况下,consume()函数将使用队列中的所有消息,但我只需要从队列中弹出一条消息,在下一次consume()调用时,从队列中弹出第二条消息,依此类推。我有以下代码: rabbit.js(在这个文件中,我实现了发送到队列和从队列接收): rabbit_test.js(在这个文件中,我测试了前面代码的功能): 当我调用queueReceive()函数时,它也会输出“01C”和“02C”消息,而不仅仅是“01C”。我只需要打印出“01C”,然后使用下一个queueReceive()调用“02C

默认情况下,consume()函数将使用队列中的所有消息,但我只需要从队列中弹出一条消息,在下一次consume()调用时,从队列中弹出第二条消息,依此类推。我有以下代码:

rabbit.js(在这个文件中,我实现了发送到队列和从队列接收):

rabbit_test.js(在这个文件中,我测试了前面代码的功能):

当我调用
queueReceive()
函数时,它也会输出“01C”和“02C”消息,而不仅仅是“01C”。我只需要打印出“01C”,然后使用下一个
queueReceive()
调用“02C”

注意:我也在rabbit.js中为函数
queueReceive()
尝试了这段代码:

我添加了
ch.ack(msg)
ch.prefetch(1)
部分,但它们都不起作用

我怎样才能让它工作?谢谢大家!

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

var ch;

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, channel) {     
    ch = channel;
  });
});

module.exports.queueSend = function(msg) {
    var q = 'hello';

    ch.assertQueue(q, {durable: false});

    ch.sendToQueue(q, new Buffer(msg));
    console.log(" [x] Sent %s", msg);
}

module.exports.queueReceive = function() {
    var q = 'hello';

    ch.assertQueue(q, {durable: false});

    console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);

    ch.consume(q, function(msg) {
      console.log(" [x] Received %s", msg.content.toString());
    }, {noAck: false});
}
var rabbit = require("./rabbit");

setTimeout(function() {
    rabbit.queueSend("01C");
    rabbit.queueSend("02C");
    rabbit.queueReceive();
}, 2000);
module.exports.queueReceive = function() {
    var q = 'hello';

    ch.prefetch(1);
    ch.assertQueue(q, {durable: false});

    console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);

    ch.consume(q, function(msg) {
      ch.ack(msg);
      console.log(" [x] Received %s", msg.content.toString());
    }, {noAck: false});
}