MassTransit Saga State : 想在移动状态后采取行动
MassTransit Saga State : Would like to do action after moving the state
我正在实施状态为“Initial”>“Pending Acknowledged”>“Acknowledged”>“Finalized”的 MassTransit SAGA 状态机。 “Pending Acknowledged”和“Acknowledged”可以切换。但是我想在将状态从“Pending Acknowledged”更改为“Acknowledged”后采取行动。
目前,我尝试在过渡到“AcknowLedged”后添加 thenAsync 任务。我发现当调用 DoSomeThing 任务和操作时,状态不会移动到“已确认”。它没有按预期工作。
**During(PendingAcknowledged)**,
When(DoAcknowledged)
.ThenAsync(MarkAcknowledged)
.Then(context => Log.Information("{@DoAcknowledge}", context.Instance))
**.TransitionTo(Acknowledged),**
**.ThenAsync(DoSomeThing)**
有什么建议吗?我该怎么做?
收到事件后,MassTransit:
- 加载现有的 saga 实例或创建新的 saga 实例
- 执行加载实例时与当前状态关联的所有活动
- 将 saga 实例保存到 saga 存储库
允许在状态机中有多个 TransitionTo
活动,但只有在所有活动完成后,saga 实例才会与最后一个状态一起保存。
因此,根据您的示例,这是完全合法的,并且会将 Acknowledged
状态保存到存储库中。
During(PendingAcknowledged),
When(DoAcknowledged)
.ThenAsync(MarkAcknowledged)
.Then(context => Log.Information("{@DoAcknowledge}", context.Instance))
.TransitionTo(Acknowledged),
.ThenAsync(DoSomeThing)
我正在实施状态为“Initial”>“Pending Acknowledged”>“Acknowledged”>“Finalized”的 MassTransit SAGA 状态机。 “Pending Acknowledged”和“Acknowledged”可以切换。但是我想在将状态从“Pending Acknowledged”更改为“Acknowledged”后采取行动。
目前,我尝试在过渡到“AcknowLedged”后添加 thenAsync 任务。我发现当调用 DoSomeThing 任务和操作时,状态不会移动到“已确认”。它没有按预期工作。
**During(PendingAcknowledged)**,
When(DoAcknowledged)
.ThenAsync(MarkAcknowledged)
.Then(context => Log.Information("{@DoAcknowledge}", context.Instance))
**.TransitionTo(Acknowledged),**
**.ThenAsync(DoSomeThing)**
有什么建议吗?我该怎么做?
收到事件后,MassTransit:
- 加载现有的 saga 实例或创建新的 saga 实例
- 执行加载实例时与当前状态关联的所有活动
- 将 saga 实例保存到 saga 存储库
允许在状态机中有多个 TransitionTo
活动,但只有在所有活动完成后,saga 实例才会与最后一个状态一起保存。
因此,根据您的示例,这是完全合法的,并且会将 Acknowledged
状态保存到存储库中。
During(PendingAcknowledged),
When(DoAcknowledged)
.ThenAsync(MarkAcknowledged)
.Then(context => Log.Information("{@DoAcknowledge}", context.Instance))
.TransitionTo(Acknowledged),
.ThenAsync(DoSomeThing)