SimpleRetryPolicy
的构造函数允许您指定哪些例外是可重试的。太好了!
但是,此输入是一个映射,其中键是Throwable的类,值是布尔值。没有任何关于这个布尔值用于什么的文档 - 这里的任何人都知道吗?
基本上,它填充了一个SubclassClassifier
的实例,其文档太难以让我的简单头脑理解:
基于地图的参数化对象类型的分类器。根据对象与提供的类型映射的继承关系对对象进行分类。如果要分类的对象是所提供的映射的键之一,或者是其中一个键的子类,则返回该键的映射条目值。否则返回默认值,默认值为null。
答案 0 :(得分:2)
请参阅SimpleRetryPolicy.retryForException()
:
/**
* Delegates to an exception classifier.
*
* @param ex
* @return true if this exception or its ancestors have been registered as
* retryable.
*/
private boolean retryForException(Throwable ex) {
return retryableClassifier.classify(ex);
}
即。如果throwable被分类(在地图中),则返回该映射条目的布尔值。
这允许您设置一组例外,明确说明您不想要重试某些异常。
考虑异常Bar
扩展Foo
(Bar
有一些兄弟类,比如Baz
,Qux
。
如果您向地图添加Foo:true
并Bar:false
,则Foo
及其Bar
以外的所有子类都可以重试。