如何为 MassTransit 断路器添加异常过滤?

How to add exception filtering to MassTransit circuit breaker?

我正在尝试向 MassTransit 断路器添加异常过滤。我只想对 TimeoutExceptions 使用 CircuitBreaker。这可能吗?

异常过滤可用于 retry/redelivery:

endpoint.UseRetry(config =>
{
    config.Handle<TimeoutException>();
    config.Interval(10, TimeSpan.FromSeconds(5));
});

是的,在上面的示例中,消息最多会重试十次,两次尝试之间等待五秒钟,但前提是抛出的异常是 TimeoutException.

另外,我建议以后使用 UseMessageRetry 而不是 UseRetry

您可以配置多个重试过滤器,每个都有不同的策略和过滤器。

过滤器的详细信息在 documentation

此外,请确保重试配置先于任何消费者配置。管道是按顺序构建的,因此顺序很重要。