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

How can I report the status of an item in a message queue

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

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

仍在 MQ 中的所有项目的状态应显示为“未启动”。理论上,这将使我查询 MQ 中用户 ID = 当前用户 ID 的所有消息。我认为从 MQ 查看所有消息可能不是很有效,不像我们在 SQL table 中所做的那样。基本上,我正在寻找 various/better 选项来从 design/architecture 的角度尽可能以最佳方式处理此问题。

您需要在数据库中的某处创建一个影子 table (SQL) 然后当您将项目推入队列时在数据库中添加一个条目,当您从队列中拉出该项目时队列更新状态,完成后再做一次。 是的,拥有第二个数据库有点头疼,但是队列旨在帮助您按顺序处理消息,而不是更新所有消息的状态。