我想知道当所有“子”事件(具有特定相关ID的所有事件)都已执行时,是否有一种简单的方法可以通知ReBus。
答案 0 :(得分:2)
我不完全确定你想要实现的目标,但如果我理解你的话,你只是想知道如何处理几个特定的消息。
在许多情况下,这可以通过在每个订户中实现与此类似的逻辑来解决:
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
进行关联。
如果所有订阅者都这样做,那么传奇可以很容易地确定这个过程到底有多远,然后在所有订阅者完成他们的事情时找出最后要做的事情。