NserviceBus省略重试策略

时间:2016-01-14 08:15:02

标签: nservicebus

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

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

1 个答案:

答案 0 :(得分:3)

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

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,如果您使用的是其他版本,请查看文档:

JSR-310