NserviceBus 省略重试策略

NserviceBus omit retry policy

我有一个消息处理程序(实现 IHandleMessages),它在 Handle 方法中执行一些操作。

是否可以仅针对特定类型的错误,省略重试策略并将事件定向到错误队列?

这可以通过创建自定义重试策略来实现。发生错误时,您可以检查异常和消息信息。

SecondLevelRetriesSettings retriesSettings = busConfiguration.SecondLevelRetries();
retriesSettings.CustomRetryPolicy(MyCustomRetryPolicy);

TimeSpan MyCustomRetryPolicy(TransportMessage transportMessage)
{
    if (transportMessage.ExceptionType() == typeof(MyBusinessException).FullName)
    {
        // Do not retry for MyBusinessException
        return TimeSpan.MinValue;
    }

    if (transportMessage.NumberOfRetries() >= 3)
    {
        return TimeSpan.MinValue;
    }

    return TimeSpan.FromSeconds(5);
}

这适用于 V5,如果您使用的是其他版本,请查看文档:

http://docs.particular.net/nservicebus/errors/automatic-retries#second-level-retries-custom-retry-policy