resttemplate用法 是否有重试机制

RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用包提供的方式)创建底层的Http请求连接。


请查看RestTemplate源码了解细节,知其然知其所以然!

自定义的一个异常结果包装类

api里面可以做自动的参数匹配:

API没有声明异常,注意进行异常处理

更多使用语法请查看API文档

 
 

默认的 RestTemplate 有个机制是请求状态码非200 就抛出异常,会中断接下来的操作。如果不想中断对结果数据得解析,可以通过覆盖默认的 ResponseErrorHandler ,见下面的示例,示例中的方法中基本都是空方法,只要对hasError修改下,让他一直返回true,即是不检查状态码及抛异常了。

或者,修改resttemplate的源码,把对应的源码文件拷贝到自己的项目中,但不推荐。

这篇文章主要给大家介绍了关于Spring Cloud中重试机制与各组件的重试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例。

feign默认是通过自己包下的Retryer进行重试配置,默认是5次

feign请求超时设置

最近挺多童鞋问我如何配置Spring Cloud xxx组件的重试。本篇进行一个总结。

Spring Cloud中的重试机制应该说是比较混乱的,不同的版本有一定区别,实现也不大一样,好在Spring Cloud Camden之后已经基本稳定下来,Dalston中又进行了一些改进,详情暂且不表。

笔者使用的版本是 Spring Cloud Dalston SR4 ,同样适应于Edgware 以及更高版本,对于Dalston 此前的版本,本文不做讨论,大家可自行研究。

在此基础上,使用如下配置,即可实现重试:

 # 同一实例最大重试次数,不包括首次调用

 # 重试其他实例的最大重试次数,不包括首次所选的server

 # 是否所有操作都进行重试

相关Issue可参考:

基于HTTP响应码重试

Hystrix的超时时间必须大于超时的时间,否则,一旦Hystrix超时,就没办法继续重试了。

一般来说,不建议将ribbon.OkToRetryOnAllOperations 设为true。因为一旦启用该配置,则表示重试任何操作,包括POST请求,而由于缓存了请求体,此时可能会影响服务器的资源。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

我要回帖

更多关于 resttemplate 的文章

 

随机推荐