c# - MassTransit Saga 状态到实例状态映射

标签 c# masstransit automatonymous

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

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

public class MySaga :
   MassTransitStateMachine<MySagaState>
{
    public State Executing { get; private set; }
    public State Completed { get; private set; }
    public State Failed { get; private set; }
    ...
}

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

public class MySagaState : SagaStateMachineInstance
{
    public Guid CorrelationId { get; set; }
    public int State { get; set; }
}

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

似乎还有两个内置的 saga 状态,“Initial”和“Final”,所以这个例子会有 5 个状态。 State 到整数的映射是如何完成的?

最佳答案

您需要指定状态,以便在状态机定义中为它们分配编号:

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

关于c# - MassTransit Saga 状态到实例状态映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220877/

相关文章:

C# CRC 实现

unit-testing - 使用 InMemoryTestFixture 测试 MassTransit Consumer

c# - 如果没有订阅者在一个月内不检索消息,如何自动删除 Azure 服务总线中的队列?

c# - 在异常情况下完成 Saga

c# - 使用 Entity Framework 和 MySQL 实现 MassTransit saga 持久性

c# - 如何在c#中读取具有通配符格式的所有文件

c# - MS Windows 服务和 https

rabbitmq - MassTransit 为 RabbitMQ 添加了什么?

masstransit - MassTransit 中的消费者传奇 vs Automatonymous

c# - Visual Studio 2017 安装项目错误 2727