Spring cloud ReadTimeout 问题解决
今天使用Spring cloud @FeignClient 调用远程服务的时候,出现readTimeout问题,通过找资料解决方式如下
在Spring.properties 配置文件中添加如下属性解决
ribbon.ReadTimeout=61000
ribbon.ConnectTimeout=61000
如果是yml文件可以使用格式
ribbon:
ReadTimeout :61000
ConnectTimeout:61000
这个属性ribbon 是在Spring-cloud-starter-feign下依赖包下,通过添加以下依赖就可以进行调用远程服务。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
调用其他的restful服务的方式如下:
@FeignClient(name="demo-feign",path="/api") public interface Demo{ @GetMapping("/getName") getName(@RequestParam("name")String name); }
其中name代表 sprngboot 项目的应用名,path代表调用远程项目的前缀。然后在SpringBoot 启动类上,加上@EnableFeignClients(basePackages =“你调用远程服务的接口的包名“)扫描
而且今天还遇到一个问题,让我铭记于心,记下来显示自己的不细心:
在使用Spring.properties 配置ReadTimeout 属性时,Spring boot在调用远程服务的时候,出现以下问题,一直懵逼了很久。最后给大家参考
For input string xxx
Could not convert xxx x to java.lang.Integer
原因竟然是在.properties配置ribbon.ReadTimeout=6000 多加一个空格,Springboot 读取配置属性的时候认为是字符串,导致一直报错。最后去掉空格解决了