在自动命名状态机中组合到 Whens

Combine to Whens in Automatonymous state machine

我正在从 MassTransit 状态机 saga 发出请求并等待回复。

但是可能有两个错误返回给我:

我不关心在哪些情况下请求未得到满足,我希望这两种情况都会导致发布错误消息。

但是,我找不到任何方法将两个结果与 条件结合起来,所以我可以对两个结果有一个处理案例,而不是复制粘贴我的代码。

在这种情况下,您应该创建一个自定义 activity(高级,可能不是必需的)或者只创建一个从两个 When() 条件调用的方法,以便您可以重用两者之间的行为声明。

Task PublishEvent(BehaviorContext<TInstance> context)
{
    var consumeContext = context.GetPayload<ConsumeContext>();

    return consumeContext.Publish(new MyEvent(...));
}

{
    During(MyRequest.Pending,
        When(MyRequest.Completed)
            .ThenAsync(PublishEvent),
        When(MyRequest.Faulted)
            .ThenAsync(PublishEvent));
}