在AWS SDK中重试

Isa*_*man 5 amazon-web-services aws-sdk retry-logic

文档表明使用 aws sdk 为您提供开箱即用的重试功能。

然后这个文档指出

// The maximum number of times that a request will be retried for failures.
// Defaults to -1, which defers the max retry setting to the service
// specific configuration.
MaxRetries *int
Run Code Online (Sandbox Code Playgroud)

这告诉我重试逻辑配置发生在服务级别。

如果是这种情况,我希望各个服务记录其重试逻辑配置。实际情况不仅并非如此,一些服务(的操作)似乎暗示它们不提供重试逻辑,而是讨论如何在应用程序级别实现这一点。例如,参见dynamodb

如果 DynamoDB 返回任何未处理的项目,您应该对这些项目重试批处理操作。但是,我们强烈建议您使用指数退避算法。如果您立即重试批处理操作,基础读取或写入请求仍可能因各个表上的限制而失败。如果使用指数退避来延迟批处理操作,则批处理中的各个请求更有可能成功。

sqs

接收请求尝试 ID 是用于 ReceiveMessage 调用的重复数据删除的令牌。

在导致开发工具包和 Amazon SQS 之间出现连接问题的长期网络中断期间,最佳实践是提供接收请求尝试 ID,并在开发工具包操作失败时使用相同的接收请求尝试 ID 重试。

我的问题是如何知道服务何时处理重试逻辑以及何时必须在应用程序级别实现它?