我想在REST模板中使用'SockettimeOutException'的Spring Retry功能。
但是春季休息模板像波纹管一样投掷:org.springframework.web.client.ResourceAccessException:i/o错误:读取时间;嵌套例外是Java.net.sockettimeoutexception:阅读时间
我在重试模板映射中添加了sockettimeoutexception。春季重试只有在重试模板地图中添加sockettimeoutexception或我还需要添加resourceaccessexception。
您需要使用具有traverseCauses
选项集的自定义SimpleRetryPolicy
。然后,它不仅要查看顶级异常,还会检查原因层次结构以寻找匹配。
/**
* Create a {@link SimpleRetryPolicy} with the specified number of retry
* attempts. If traverseCauses is true, the exception causes will be traversed until
* a match is found.
*
* @param maxAttempts the maximum number of attempts
* @param retryableExceptions the map of exceptions that are retryable based on the
* map value (true/false).
* @param traverseCauses is this clause traversable
*/
public SimpleRetryPolicy(int maxAttempts, Map<Class<? extends Throwable>, Boolean> retryableExceptions,
boolean traverseCauses) {
this(maxAttempts, retryableExceptions, traverseCauses, false);
}