微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Amazon Web Services中的API重试逻辑

http://docs.aws.amazon.com/general/latest/gr/api-retries.html

本文档提到“每个AWS SDK实现自动重试逻辑,AWS SDK for Java自动重试请求”.

如果我没有指定任何重试配置,那么Java AWS SDK的认机制是什么?如果AWS服务端出现故障,我一直在使用Java AWS SDK并获得简单的服务异常.我从未经历过任何“自动”重试机制.有人可以解释一下这种重试机制是什么吗?

解决方法

相同的文档页面说:

The AWS SDK for Java automatically retries requests,and you can configure the retry settings using the ClientConfiguration class.

您应该查看ClientConfiguration的官方文档,它有很多方法可以调整其有关重试逻辑的行为.这是最重要的:

> withMaxErrorRetry设置失败的可重试请求的最大重试次数(例如:来自服务的5xx错误响应)
> withRequestTimeout设置在放弃和超时前完成请求的等待时间(以毫秒为单位)[…]
> withThrottledRetries重试限制功能可在大部分请求失败且重试失败时智能地限制重试尝试[…]
> withRetryPolicy这是最有趣的,它允许您选择RetryPolicy并更改:

> BackoffStrategy用于提供自定义退避策略以控制重试之间的休眠时间的钩子
> RetryCondition用于提供是否应重试失败请求的自定义条件的挂钩
> maxErrorRetry
> honorMaxErrorRetryInClientConfig(是否遵守上述配置设置)

另请注意,如果您没有注意到自动重试机制,则可能是由于客户端错误.这些设置仅用于在服务器(5xx)或限制错误的情况下重试请求:

client errors (4xx) indicate that you need to revise the request to correct the problem before trying again

如果您声称它是“服务端”失败,您应该提供一些代码来重现情况并分析实际发生​​的情况.

现在关于认值:

What is the default mechanism for Java SDK,if i don’t specify any retry config?

您可以查找ClientConfiguration constant fields认值.但请注意,它可能因您使用的服务而异(特别是DynamoDB是一种特殊情况).另请参阅PredefinedClientConfigurationsPredefinedRetryPolicies课程.

原文地址:https://www.jb51.cc/java/239971.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐