小编Ken*_*all的帖子

使用 Node.js 使用 RabbitMQ 消息时可以等待进程完成吗?

我对 Node.js 和 ES6 还很陌生,这让我有点困惑。我试图让进程保持运行状态,消耗来自 RabbitMQ 队列的消息。它需要能够处理该消息(大约需要 30-60 秒),然后才能获取下一条消息。目前,我拥有的代码,它会获取所有可以获取的消息,然后尝试分叉进程。当队列中有 3-5 条消息时,这很好,但对于 20、50 或 100 条消息,这会导致服务器内存不足。

我尝试使.consume()回调函数异步并添加await到消息处理函数中。我尝试await new Promise.consume()回调中包装一个processMessage。我尝试添加await到调用channel.consume. 没有什么改变行为。

#!/usr/bin/env node

const amqp = require('amqplib');

const consumeFromQueue = async (queue, isNoAck = false, durable = false, prefetch = null) => {
    const conn_str = "amqp://" + process.env.RABBITMQ_USERNAME + ":" + process.env.RABBITMQ_PASSWORD + "@" + process.env.RABBITMQ_HOST + "/development?heartbeat=60"
    const cluster = await amqp.connect(conn_str);
    const channel = await …
Run Code Online (Sandbox Code Playgroud)

javascript rabbitmq node.js es6-promise

7
推荐指数
1
解决办法
6326
查看次数

标签 统计

es6-promise ×1

javascript ×1

node.js ×1

rabbitmq ×1