具有工作队列devise模式的API

我正在build立一个连接到工作队列的API,并且在结构上遇到了麻烦。 我正在寻找的是一个通过API接口的工作队列的devise模式。

细节:

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

因此,例如让我说,我发送一个请求到API将需要15分钟处理。 Express API格式化请求并将其放入RabbitMQ(AMQP)队列中。 下一个可用的工作人员将请求从队列中取出并开始处理。 完成后(在这种情况下15分钟)它将数据保存到MongoDB中。 …. 怎么办 …..

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

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

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

谢谢,麻烦您了。

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

然后,您可以为客户端提供一个额外的API方法来检查任务的状态。 这个方法应该只有一个参数,任务标识符,并检查一个具有这个标识符的文档是否已经在MongoDB中join了你的集合。 如果它不存在,则返回false,如果没有则返回true。

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