【问题标题】:How can I report the status of an item in a message queue如何报告消息队列中项目的状态
【发布时间】:2018-04-16 01:40:59
【问题描述】:

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

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

仍在 MQ 中的所有项目的状态应显示为“未开始”。从理论上讲,这将使我查询 MQ 中用户 ID = 当前用户 ID 的所有消息。我认为从 MQ 中查看所有消息可能不是很有效,这与我们在 SQL 表中所做的不同。基本上,我正在寻找各种/更好的选择来从设计/架构的角度以最好的方式处理这个问题。

【问题讨论】:

    标签: asynchronous architecture message-queue servicebus


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2020-06-26
      • 2020-11-24
      相关资源
      最近更新 更多