MassTransit Saga 状态到实例状态映射

Lan*_*onC 1 c# masstransit automatonymous

我是 MassTransit 的新手,我似乎无法弄清楚它如何将我在 saga (MassTransitStateMachine) 上定义的状态映射到相关 SagaStateMachineInstance 类上的“State”属性。

例如,如果我有一个具有三种状态的状态机类:

public class MySaga :
   MassTransitStateMachine<MySagaState>
{
    public State Executing { get; private set; }
    public State Completed { get; private set; }
    public State Failed { get; private set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的状态机实例类有一个“State”属性

public class MySagaState : SagaStateMachineInstance
{
    public Guid CorrelationId { get; set; }
    public int State { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

MT 如何决定哪个 saga 状态是哪个整数?

似乎还有两个内置 saga 状态:“初始”和“最终”,因此此示例将有 5 个状态。状态到整数的映射是如何完成的?

Chr*_*son 6

您需要指定状态以便为它们分配编号作为状态机定义的一部分:

public class MySaga :
  MassTransitStateMachine<MySagaState>
{
    public MySaga()
    {
        InstanceState(x => x.State, Executing, Completed, Failed);
        // 1 = Initial, 2 = Final, 3 = Executing, 4 = Completed
        // 5 - Failed (1 & 2 are built-in states)
    }

    public State Executing { get; private set; }
    public State Completed { get; private set; }
    public State Failed { get; private set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)