如何在MassTransit中删除传奇



使用MassTransit中的Sagas,我可以添加一个持久性提供程序,以便持久化它们的状态。然而,我能以某种方式再次删除特定传奇的状态吗?如果这是自动完成的,什么时候完成?

当您完成传奇(finalize(并调用SetCompletedWhenFinalized((时,传奇会自动删除;

DuringAny(
When(OrderCompleted)
.Finalize());
SetCompletedWhenFinalized();

或使用自定义完整定义

DuringAny(
When(OrderCompleted)
.TransitionTo(Completed));
SetCompleted(async instance => 
{
State<TInstance> currentState = await this.GetState(instance);
return Completed.Equals(currentState);
});
...
public State Completed { get; private set; }

更多文档