RabbitMQ订阅者基于两个事件

时间:2017-08-24 02:56:38

标签: asynchronous rabbitmq celery messaging

当两个独立的异步事件完成时,我们需要触发另一个事件。我们将在每个异步事件完成时发布单个rabbitmq消息。我浏览了RabbitMQ文档,但没有找到办法优雅地处理这个问题。

Scenario:
- Task A completed
- Task B completed
Start task C only if A & B are completed.

有没有可以帮助我的设计模式? RabbitMQ以外的任何东西都没问题。我们希望在没有投票的情况下实现这一目标。任务完全独立于3个不同的系统中。

芹菜有助于此吗?

1 个答案:

答案 0 :(得分:0)

我们在RabbitMQ中使用Aggregator模式实现了这一点。

http://www.enterpriseintegrationpatterns.com/patterns/messaging/Aggregator.html

我们创建了一个主题(聚合器)。任务A和任务B都订阅了它。只要任何任务完成,就会将消息推送到主题。主题是维护taskA和taskB的状态,并在两个任务完成后发布另一条消息。