Rebus:如何在应用所有相关事件时进行拦截
Rebus: how to intercept when all correlated events are applied
我想知道 ReBus 中是否有一种简单的方法可以在所有“子”事件(具有特定关联 ID 的所有事件)都已执行时得到通知。
我不完全确定您要实现的目标,但如果我理解正确的话,您只是在问如何知道何时处理了几条特定的消息。
在很多情况下,这可以通过在每个订阅者中实现类似于以下的逻辑来解决:
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
.
进行关联
如果所有订阅者都这样做,那么 saga 可以很容易地确定这个过程已经进行了多远,然后在所有订阅者都完成了他们的事情后找出最后要做的事情。
我想知道 ReBus 中是否有一种简单的方法可以在所有“子”事件(具有特定关联 ID 的所有事件)都已执行时得到通知。
我不完全确定您要实现的目标,但如果我理解正确的话,您只是在问如何知道何时处理了几条特定的消息。
在很多情况下,这可以通过在每个订阅者中实现类似于以下的逻辑来解决:
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
.
如果所有订阅者都这样做,那么 saga 可以很容易地确定这个过程已经进行了多远,然后在所有订阅者都完成了他们的事情后找出最后要做的事情。