我正在使用带有 sagas 的 Masstransit 5.1.4。我有一个传奇,我想实现以下行为:
- 当收到 StartMsg 时 -> 转换到 Active 状态
- 处于活动状态时,会处理几个事件
- 如果在此状态下接收到 StartMsg,则当前 saga 已完成并在新的 saga 实例中重新处理 StartMsg
我怎样才能做到这一点?
这是一个小伪代码
Initially(
When(StartEvt)
.Then(...)
.TransitionTo(Active)
);
During(Active,
When(OneEvt)
.Then(...),
When(AnotherEvt
.Then(...),
When(EndEvt)
.Finalize(),
When(StartEvt)
// Finalize current saga
// Transition to initial state reprocessing StartMessage bound to StartEvt