当前位置:主页 > 查看内容

Tablestore的SDK如何配置自定义重试

发布时间:2021-06-30 00:00| 位朋友查看

简介:当我们的应用服务遇到网络抖动、服务端进行分区分裂等问题时候 会出现请求超时或者失败。Tablestore的SDK里默认配置支持一些基本的重试逻辑 但是并不能满足所有业务 因此这里介绍一下常见语言的SDK中如何自定义进行重试。 JAVA 构造Client 传入指定的重试策……

当我们的应用服务遇到网络抖动、服务端进行分区分裂等问题时候 会出现请求超时或者失败。Tablestore的SDK里默认配置支持一些基本的重试逻辑 但是并不能满足所有业务 因此这里介绍一下常见语言的SDK中如何自定义进行重试。

JAVA

构造Client 传入指定的重试策略。

ClientConfiguration?clientConfiguration? ?new?ClientConfiguration();
RetryStrategy?retryStrategy? ?new?AlwaysRetryStrategy(10,?1000);
clientConfiguration.setRetryStrategy(retryStrategy);
SyncClient?client? ?new?SyncClient( endpoint ,? accessId ,? accessKey ,? instanceName ,?clientConfiguration);

默认的重试策略 写入操作是不会进行重试的 如果写入也是幂等的 那么可以使用如上所示的AlwaysRetryStrategy重试策略 指定最大重试次数和最大重试间隔 重试间隔会指数增长到最大重试间隔 即可。

当然还可以自定义重试策略 只需要实现RetryStrategy接口即可 自己通过判断action和Exception类型 可以实现哪些异常进行重试 哪些API可以进行重试 具体可以参考RetryStrategy的源码说明以及DefaultRetryStrategy中的实现逻辑

GO设置网络相关的一些参数实现自定义重试函数。可以根据errorCode、errorMsg、action、httpStatus等信息判断要不要进行重试。在构造好client后设置该client的重试策略。
//?设置网络相关的一些参数
var?myConfig? ? tablestore.TableStoreConfig{
 RetryTimes:?10,
 HTTPTimeout:?tablestore.HTTPTimeout{
 ConnectionTimeout:?time.Second?*?15,
 RequestTimeout:????time.Second?*?60},
 MaxRetryTime:???????time.Second?*?10,
 MaxIdleConnections:?2000,

本文转自网络,原文链接:https://developer.aliyun.com/article/784976
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:阿里云Java SDK通过代理访问阿里云OpenAPI 下一篇:没有了

推荐图文


随机推荐