让我们说我有一系列需要顺序执行的命令,而且有些命令包含多个应该并行执行的操作(相同的相关ID)。让我们假设我需要知道何时执行所有并行操作,以便继续在管道中执行。
是否可以通过使用交换和队列单独使用RabbitMQ来实现这种编排,而无需使用数据库等外部数据源?
我对以下用例感兴趣: 我刚刚在同一个队列上发布了3条相同类型的消息。这些消息正在并行处理。我想仅在相同关联ID的所有消息都成功完成时才发布新消息。
有没有办法用RabbitMQ实现这个目标?
答案 0 :(得分:4)
听起来你可以使用分散 - 聚集模式。这用图表很好地解释了这种模式:
http://www.enterpriseintegrationpatterns.com/patterns/messaging/BroadcastAggregate.html
这是一个关于如何使用RabbitMQ实现的教程: http://geekswithblogs.net/michaelstephenson/archive/2012/08/06/150373.aspx