使用RabbitMQ Queue时等待NodeJS中的异步任务

Tre*_*son 5 amqp rabbitmq node.js

在 node.js 中使用 amqp-lib (7) 我在从 RabbitMQ 队列中消费时无法等待异步任务。

例如,

    channel.consume(exchange_name, doWork, {
        noAck: false
    });

    function doWork(msg) {
        log.info(JSON.parse(msg.content.toString()));
        setTimeout(function () {
            log.info("   Done");
            channel.ack(msg);
        }, 2000);
    }
Run Code Online (Sandbox Code Playgroud)

这应该,AFAIK 从队列中检索消息,处理它,然后确认该过程已完成并成功。

但是,当我运行它与包含 1000 条消息的队列时,它将抓取所有 1000 条消息并启动该过程。然后 2 秒后,确认一切都已完成。

是否可以等待该过程完成并获得下一个?(在等待另一个进程时,工作人员不应消耗成千上万条消息中的 10 条)。

提前致谢