【问题标题】:How do Sagas get deleted in MassTransit?如何在 MassTransit 中删除 Sagas?
【发布时间】:2021-01-12 18:26:31
【问题描述】:

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

【问题讨论】:

标签: c# masstransit


【解决方案1】:

当你完成 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

【讨论】:

  • 很好 - 这也适用于 Consumer Sagas 吗?
  • 可能是的,但我绝对更喜欢使用自动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 2018-11-30
相关资源
最近更新 更多