3

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

但是我可能会遇到两个错误:

  • MyRequest.TimeoutExpired
  • MyRequest.Faulted

我不在乎在哪些条件下请求没有得到满足,我希望这两种情况都会导致发布错误消息。

但是,我找不到任何方法将两个结果与or条件结合起来,因此我可以为这两个结果提供一个处理案例,而不是复制粘贴我的代码。

4

1 回答 1

3

在这种情况下,您应该创建一个自定义活动(高级,可能没有必要),或者只创建一个从两个 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));
}
于 2016-03-24T03:19:33.127 回答