具有工作队列设计模式的API

时间:2013-10-09 21:16:57

标签: node.js api queue amqp worker

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

详细信息:

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

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

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

工作人员会将处理过的数据保存到数据库中,但我无法回到原来的调用程序。

有没有人拥有工作队列资源的API?

请,谢谢你。

1 个答案:

答案 0 :(得分:3)

在客户端的初始调用中,您应该向客户端返回一个任务标识符,该标识符将一直存储到MongoDB中。

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

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