【发布时间】:2017-06-06 15:27:44
【问题描述】:
我想知道 ReBus 中是否有一种简单的方法可以在所有“子”事件(所有具有特定关联 ID 的事件)都已执行时收到通知。
【问题讨论】:
标签: rebus
我想知道 ReBus 中是否有一种简单的方法可以在所有“子”事件(所有具有特定关联 ID 的事件)都已执行时收到通知。
【问题讨论】:
标签: rebus
我不完全确定您要达到什么目的,但如果我理解正确,您只是在询问如何知道几条特定消息何时被处理。
在很多情况下,这可以通过在每个订阅者中实现类似的逻辑来解决:
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 关联。
如果所有订阅者都这样做,传奇可以很容易地确定这个过程已经完成了多远,然后在所有订阅者都完成他们的事情后找出最后要做的事情。
【讨论】: