如何为DynamoDB客户端配置含多个RetryCondition的RetryPolicy
DynamoDB客户端RetryPolicy配置多个RetryCondition的实现方法
可以直接通过AWS SDK提供的条件组合类实现多重试条件配置,无需自定义复杂逻辑。
SDK提供两种基础组合条件:
- 满足任意一个条件就触发重试:使用
OrRetryCondition,是最常用的多条件场景 - 所有条件全部满足才触发重试:使用
AndRetryCondition
以下是同时对UnknownHostException、SocketTimeoutException、503状态码都触发重试的示例代码:
ClientOverrideConfiguration.builder() .retryPolicy(RetryPolicy.builder() .retryCondition( OrRetryCondition.create( RetryOnExceptionsCondition.create(UnknownHostException.class), RetryOnExceptionsCondition.create(SocketTimeoutException.class), RetryOnStatusCodeCondition.create(HttpStatusCode.SERVICE_UNAVAILABLE_503) ) ) .build()) .build();
说明:内置重试条件、自定义实现的RetryCondition都可以放入组合条件中,也支持多层嵌套组合(比如在OrRetryCondition中嵌套AndRetryCondition实现复杂逻辑)。
如果你需要保留SDK默认的重试规则(如限流错误、服务端错误重试等),不要直接替换默认重试条件,可以把默认条件加入组合规则中:
.retryCondition( OrRetryCondition.create( RetryPolicy.defaultRetryCondition(), // 保留SDK原有重试逻辑 RetryOnExceptionsCondition.create(UnknownHostException.class) ) )
内容的提问来源于stack exchange,提问作者yurii.pitomets
相关产品推荐
相关产品推荐

