我有一个消息处理程序(实现IHandleMessages),它在Handle方法中执行一些操作。
是否可能仅针对某些类型的错误,省略重试策略并将事件定向到错误队列?
答案 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,如果您使用的是其他版本,请查看文档: