使用的springBoot版本号为2.0.3
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
使用的springCloud版本号为Finchley
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> <skipTests>true</skipTests> </properties>
<!--feignClient--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
feign依赖中已经包含了hystrix。
# 熔断器开启 虽然不会提示 但是是有效果的 feign: hystrix: enabled: true
在使用@FeignClient 调用内部服务时,接口还没处理完 就直接被熔断处理了。 有两个原因: 1.feign包下的内部类 Request.Options 有默认的处理时间,超时时间为10s已经足够了: public static class Options { private final int connectTimeoutMillis; private final int readTimeoutMillis; public Options(int connectTimeoutMillis, int readTimeoutMillis) { this.connectTimeoutMillis = connectTimeoutMillis; this.readTimeoutMillis = readTimeoutMillis; } public Options() { this(10000, 60000); } public int connectTimeoutMillis() { return this.connectTimeoutMillis; } public int readTimeoutMillis() { return this.readTimeoutMillis; } } 2.熔断器默认的超时时间是1s,所有是远远不够的,修改配置为10s:
# 最大超时会熔断
# 最大超时会熔断 hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 10000 ribbon: ConnectTimeout: 10000 ReadTimeout: 8000
详细的属性参考链接:https://blog.csdn.net/harris135/article/details/77879148?utm_source=blogxgwz0