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



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

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

所有仍在MQ中的项目都应显示为">未启动"。从理论上讲,这将使我查询MQ中的所有消息,其中用户ID=当前用户ID。我认为从MQ中查看所有消息可能不是很有效,不像在SQL表中那样。基本上,我正在寻找各种/更好的选择,以从设计/架构的角度尽可能以最佳的方式处理这一问题。

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

最新更新