gpt4 book ai didi

node.js - 停止 RabbitMQ 消费者进程当前消息

转载 作者:可可西里 更新时间:2023-11-01 11:28:43 24 4
gpt4 key购买 nike

我正在 NodeJS 上编写一个处理 CPU 密集型任务的服务。主要思想非常简单:

  1. Client(浏览器)发送请求
  2. Webserver (NodeJS + ExpressJS) 处理请求:生成 ID,使用该 ID 将任务添加到 RabbitMQ,并使用该 ID 回复客户端。
  3. 同时 webserver 将任务添加到 Redis 服务器,ID 作为键,{status: active} 作为值
  4. 消费者在大约一分钟内处理任务并使用派生结果更新 redis 条目。
  5. Client 使用此 ID 检查相应任务的状态。

问题:如果客户端停止询问服务器任务是否仍在运行,我希望消费者停止处理步骤 4 中的任务。我如何使用 RabbitMQ 做到这一点?

P.S.:我尝试清除队列但遇到了一些问题:如果消费者未确认消息,则不会清除队列。一样伤心here ,这只会在我的 CPU 密集型任务完成后发生。

最佳答案

我已经解决了清除消费者的问题,但没有使用 RabbitMQ,因为没有找到任何 API。

this answer 中所述在 SO 上,如果消费者是否应该继续,我可以检查另一个数据库。因此,我决定也为此目的使用 redis:在工作线程中,如果 key 尚未过期,我会检查 redis 中的相应条目。

希望这对其他人有帮助。

关于node.js - 停止 RabbitMQ 消费者进程当前消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com