我正在从 MassTransit 状态机传奇发出请求并等待回复。
但是我可能会遇到两个错误:
- MyRequest.TimeoutExpired
- MyRequest.Faulted
我不在乎在哪些条件下请求没有得到满足,我希望这两种情况都会导致发布错误消息。
但是,我找不到任何方法将两个结果与or条件结合起来,因此我可以为这两个结果提供一个处理案例,而不是复制粘贴我的代码。
我正在从 MassTransit 状态机传奇发出请求并等待回复。
但是我可能会遇到两个错误:
我不在乎在哪些条件下请求没有得到满足,我希望这两种情况都会导致发布错误消息。
但是,我找不到任何方法将两个结果与or条件结合起来,因此我可以为这两个结果提供一个处理案例,而不是复制粘贴我的代码。
在这种情况下,您应该创建一个自定义活动(高级,可能没有必要),或者只创建一个从两个 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));
}