如何在 MassTransit 中删除 Sagas?

问题描述

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

解决方法

当你完成saga(finalize)并调用SetCompletedWhenFinalized()时,saga会自动删除;

        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; }

More in docs