AWS Java SDK中仅DDB批量请求有重试策略?非批量调用重试在哪?
关于AWS Java SDK中DynamoDBMapper非批量方法的重试逻辑说明
- 不是仅批量方法有重试实现:你在
DynamoDBMapper的load()/save()/delete()等非批量方法中找不到重试代码,是因为这些方法的重试逻辑并不在Mapper层,而是由底层的AmazonDynamoDB客户端负责实现。 - 非批量方法的重试位置:
DynamoDBMapper是上层封装类,它会调用AmazonDynamoDB客户端的对应API(比如load()对应getItem(),save()对应putItem()/updateItem(),delete()对应deleteItem()),而AWS Java SDK的AmazonDynamoDB客户端默认已内置重试机制,会针对可重试错误(如节流错误ProvisionedThroughputExceededException、服务内部错误InternalServerError等)自动执行重试,并遵循指数退避策略。 - 批量方法的特殊重试:
batchLoad()/batchWrite()等批量方法在Mapper层可见的重试逻辑,是针对批量操作的特有场景——这类操作包含多个子请求,当部分子请求失败(比如未处理的键)时,Mapper层会额外处理这部分失败项的重试,这是对底层客户端重试的补充,而非替代。 - 自定义重试策略:如果需要调整重试规则,可以通过
ClientConfiguration配置重试次数、退避策略等参数,再将配置好的AmazonDynamoDB客户端传入DynamoDBMapper的构造方法,所有通过Mapper发起的请求(包括非批量和批量)都会遵循自定义的重试策略。
内容的提问来源于stack exchange,提问作者StillLearning
相关产品推荐
相关产品推荐

