【问题标题】:Rebus: how to intercept when all correlated events are appliedRebus:当应用所有相关事件时如何拦截
【发布时间】:2017-06-06 15:27:44
【问题描述】:

我想知道 ReBus 中是否有一种简单的方法可以在所有“子”事件(所有具有特定关联 ID 的事件)都已执行时收到通知。

【问题讨论】:

    标签: rebus


    【解决方案1】:

    我不完全确定您要达到什么目的,但如果我理解正确,您只是在询问如何知道几条特定消息何时被处理。

    在很多情况下,这可以通过在每个订阅者中实现类似的逻辑来解决:

    public class SomeSubscriberHandler : IHandleMessages<AnEvent>
    {
        public async Task Handle(AnEvent anEvent)
        {
            // handle event by doing something
            // ...
    
            // let the world know I did something
            await _bus.Publish(new SomeSubscriberDidSomething(anEvent.CorrelationId));
        }      
    }
    

    从而允许 saga 订阅 SomeSubscriberDidSomething,通过封闭的 CorrelationId 关联。

    如果所有订阅者都这样做,传奇可以很容易地确定这个过程已经完成了多远,然后在所有订阅者都完成他们的事情后找出最后要做的事情。

    【讨论】:

      猜你喜欢
      • 2020-04-17
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多