http://docs.aws.amazon.com/zh_cn/general/latest/gr/api-retries.html
该文档提到“每个 AWS SDK 实现了自动重试逻辑,Java 的 AWS SDK 自动重试请求。”
如果我没有指定任何重试配置,Java AWS SDK 的默认机制是什么?我一直在使用 Java AWS SDK,如果 AWS 服务端发生故障,我会收到一个简单的服务异常,但从未遇到过任何“自动”重试机制。有人能解释一下这个重试机制吗?
http://docs.aws.amazon.com/zh_cn/general/latest/gr/api-retries.html
该文档提到“每个 AWS SDK 实现了自动重试逻辑,Java 的 AWS SDK 自动重试请求。”
如果我没有指定任何重试配置,Java AWS SDK 的默认机制是什么?我一直在使用 Java AWS SDK,如果 AWS 服务端发生故障,我会收到一个简单的服务异常,但从未遇到过任何“自动”重试机制。有人能解释一下这个重试机制吗?
ClientConfiguration
,其中有很多方法可以调整其关于重试逻辑的行为。以下是最重要的:
withMaxErrorRetry
设置重试失败的可重试请求(例如服务端5xx错误响应)的最大重试次数withRequestTimeout
设置等待请求完成的超时时间(以毫秒为单位),在超时后放弃请求并结束withThrottledRetries
重试限流是一种智能的限制重试尝试的功能,当大量请求失败且重试不成功时使用withRetryPolicy
这是最有趣的部分,它允许您选择RetryPolicy
并更改:
BackoffStrategy
提供自定义退避策略来控制重试之间的休眠时间的钩子RetryCondition
提供自定义条件来决定是否应该重试失败的请求的钩子maxErrorRetry
honorMaxErrorRetryInClientConfig
(是否要遵守上述配置设置)如果您声称是“服务端”出现了故障,应提供一些代码以重现情况并分析实际发生的情况。客户端错误(4xx)表示您需要修正请求以在再次尝试之前解决问题
关于默认值:
如果我没有指定任何重试配置,Java SDK的默认机制是什么?
您可以查找常量字段中ClientConfiguration
的默认值。但请注意,它可能因您使用的服务而异(特别是DynamoDB是一个特殊情况)。还要检查PredefinedClientConfigurations
和PredefinedRetryPolicies
类。
ClientConfiguration
类配置重试次数。 - Abhineet