gpt4 book ai didi

node.js - 具有工作队列设计模式的 API

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:03 25 4
gpt4 key购买 nike

我正在构建一个连接到工作队列的 API,但我在结构方面遇到了问题。我正在寻找的是通过 API 连接的工作队列的设计模式。

详细信息:

我正在使用 Node.js 服务器和 Express 创建一个接受请求并返回 JSON 的 API。这些请求可能需要很长时间才能处理(数据非常密集),因此这就是我们使用排队系统 (RabbitMQ) 的原因。

例如,假设我向 API 发送了一个需要 15 分钟处理的请求。 Express API 格式化请求并将其放入 RabbitMQ (AMQP) 队列中。下一个可用的工作人员将请求从队列中取出并开始处理它。完成后(在本例中为 15 分钟),它将数据保存到 MongoDB 中。 ....现在.....

我的问题是,如何将完成的数据返回给 API 的调用者?调用者是一个完全独立的程序,它通过类似 Ajax 请求的方式联系 API。

worker会将处理后的数据存入数据库,但我没有办法回传给原来的调用程序。

有没有人有任何带有工作队列资源的 API?

谢谢你。

最佳答案

在客户端发起调用时,您应该向客户端返回一个任务标识符,该标识符将一直与数据一起保存到 MongoDB。

然后您可以为客户端提供额外的 API 方法来检查任务的状态。此方法应采用单个参数,即任务标识符,并检查具有该标识符的文档是否已进入您在 MongoDB 中的集合。不存在则返回 false,存在则返回 true。

客户端将不得不重复轮询(但可能间隔 1 分钟)任务状态 API 方法,直到它返回 true。

关于node.js - 具有工作队列设计模式的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282915/

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