今天测了一下Ribbon的重试跟超时机制,发现进行的全局超时配置一直不生效,配置如下:

ribbon:
#单位ms,请求连接的超时时间,默认1000
ConnectTimeout: 500
#单位ms,读取数据的超时时间,默认1000
ReadTimeout: 3000
#对所有操作请求都进行重试
#设置为true时,会对所有的请求进行重试,若为false只会对get请求进行重试
#如果是put或post等写操作,
#如果服务器接口没做幂等性,会产生不好的结果,所以OkToRetryOnAllOperations慎用。
#默认情况下,GET方式请求无论是连接异常还是读取异常,都会进行重试
#非GET方式请求,只有连接异常时,才会进行重试
OkToRetryOnAllOperations: true
#切换实例的重试次数,默认为1
MaxAutoRetriesNextServer: 1
#如果不配置ribbon的重试次数
#对当前实例的重试次数,默认为0
MaxAutoRetries: 2
#为true的时候会关闭懒加载
#Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的,
#而是在调用的时候才会去创建相应的Client,所以第一次调用的耗时不仅仅包含发送HTTP请求的时间,还包含了创建RibbonClient的时间
#这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,第一次请求很容易超时
eager-load:
enabled: true
#指定需要关闭懒加载的服务名
clients: eureka-client

测了一天后,解决方案如下:

  1. 解决全局配置不生效的问题
@Bean
@LoadBalanced
public RestTemplate ribbonRestTemplate() {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setReadTimeout(2000);
factory.setConnectTimeout(2000);
return new RestTemplate(factory);
}

因为Ribbon层走的一定是RestTemplate,所以我们可以直接配置这个RestTemplate的配置

  1. 解决重试不生效的问题:

pom中需要新增依赖:

<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>

启动类新增注解:@EnableRetry

关于重试为什么不生效我一直没找到原因,希望有懂的大佬能不吝赐教!!!!

我的版本:

Spring Boot版本:2.1.4.RELEASE

Spring Cloud版本:Greenwich.SR1

最新文章

  1. 批量 ping 测试脚本
  2. SNMP协议以及著名的MIB详解
  3. vim格式化代码实际上就是 &quot;缩进代码&quot;, 命令是等号=
  4. css:使用笔记(不断更新中...)
  5. linux 下的进程管理工具 supervisor
  6. 触摸与手势学习-swift
  7. [Locked] Paint Fence
  8. 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
  9. iOS关于蓝牙连接的简单介绍与使用
  10. RecyclerView详解
  11. sql server 高可用故障转移(上)
  12. MTK-LCM 屏幕使用fbconfig/PanelMaster来调试LCM驱动
  13. C5.cpp
  14. MT【286】最佳有理逼近
  15. Linux系统编程目录
  16. 第七篇——Struts2的接收参数
  17. Redux-persist使用
  18. Java多线程:Linux多路复用,Java NIO与Netty简述
  19. Js利用Canvas实现图片压缩
  20. 【转载】java前后端 动静分离,JavaWeb项目为什么我们要放弃jsp?

热门文章

  1. 深入理解new运算符
  2. cheat sheet 简介
  3. [转载]绕过CDN查找真实IP方法总结
  4. SQLi —— 逗号,空格,字段名过滤突破
  5. kubernetes的headless service介绍
  6. js获取数组中最大值
  7. vue中使用echarts 制作某市各个街道镇的地图
  8. go获取当前项目下所有依赖包
  9. 随笔之——浮动(float)的影响及其清除、、clear与overflow-hidden清除float的不同!!!
  10. 4、flink自定义source、sink