我正在试用带有springboot的RabbitMQ。我有一个主要流程,在该流程中,我创建了许多可以从其他工作人员处理的小任务。从主要流程的角度来看,我想知道所有这些任务何时完成,以便它可以进入下一步。如果任务完成,我没有找到一种简单的方法来查询rabbitmq。
我能想到的一个解决方案是将这些任务存储在数据库中,并在每条消息完成后,使用COMPLETE状态更新数据库。一旦所有作业都处于COMPLETE状态,主进程就可以知道作业是完整的,它可以移动到下一步适合的过程。
我能想到的另一个解决方案是主流程维护发送给其他员工的工作列表。一旦每个工作人员完成它的工作,它就可以向主进程发送一条消息,指示作业已完成。然后,主进程可以标记作业已完成并从列表中删除该项目。一旦列表为空,主进程将知道作业已完成,并且可以进入下一步工作。
我希望学习其他人如何应对这种情况的最佳实践。我很感激任何建议。
谢谢!
答案 0 :(得分:2)
无法向RabbitMQ查询此信息。
解决此问题的最佳方法是使用process manager。
基本思路是让您的个人步骤将消息发送回中央流程,以跟踪已完成的步骤。当主进程收到完成所有步骤的通知时,它会让系统继续进行下一步。
这种方法的细节相当复杂,但我的博客文章涵盖了the core of a process manager from a JavaScript/NodeJS perspective。
您应该能够在您的语言和RabbitMQ框架中找到类似“流程管理器”或“saga”的内容,因为它们有时会被调用。如果没有,你应该能够为你的过程编写一个没有太多麻烦,如我的博客文章中所述。