如何报告消息队列中项目的状态

时间:2017-11-03 10:42:23

标签: asynchronous architecture message-queue servicebus

我打算使用消息队列(RabbitMQ)在我的应用程序中实现异步文件生成模块。当用户通过Web应用程序UI输入数据时,数据将被放入MQ中。数据还包含请求用户的ID。有一个工作程序应用程序轮询队列。工作程序从队列中删除项目,处理记录,作为结果创建文件,并将文件存储到数据库中。我的要求是我想向用户显示一个网格,显示他们所做的所有请求的状态,如下表所示

----------------------------
Report Name  |  Status      
----------------------------
Report 1     |  Not Started 
Report 2     |  Completed   
----------------------------

MQ中的所有项目都应显示状态为' 未启动'。从理论上讲,这将使我查询MQ中的所有消息,其中User ID =当前用户ID。我认为从MQ中查看所有消息可能效率不高,这与我们在SQL表中的操作不同。基本上,我正在寻找各种/更好的选择,从设计/架构的角度来处理这种最佳方式。

1 个答案:

答案 0 :(得分:1)

你需要在数据库(SQL)的某个地方创建一个影子表,然后当你在队列中推送一个项目时,在数据库中添加一个条目,当你从队列中提取项目时更新状态,以及当你完成时它再次。 是的,拥有第二个数据库有点令人头疼,但是队列旨在帮助您按顺序处理消息,而不是更新所有消息的状态。