spring-cloud feign hystrix配置熔断为什么不生效的原因

摘要: 今天特地测试了用feign来作为负载均衡器做测试,配置很简单,而且也能很好的工作,但突然,我想既然用了feign,干脆也把熔断也测试了,也就是hystrix支持的熔断. 没想到反而在这个上面花了不少时间。死活不进入熔断配置的方法。一般报两种错:1. Service Look up error: Load balancer does not have available server for client...2. feign connection refused: connect executing get, 也就是找不到微服务,连接不上,因为熔断测试的时候是停止微服务测试的。

今天特地测试了用feign来作为负载均衡器做测试,配置很简单,而且也能很好的工作,但突然,我想既然用了feign,干脆也把熔断也测试了,也就是hystrix支持的熔断. 没想到反而在这个上面花了不少时间。死活不进入熔断配置的方法。一般报两种错:
1. Service Look up error: Load balancer does not have available server for client...
2. feign connection refused: connect executing get, 也就是找不到微服务,连接不上,因为熔断测试的时候是停止微服务测试的。

其实对于第一种错误,也许可以参考github上面的说明:https://github.com/spring-cloud/spring-cloud-netflix/issues/746, fetching the registry is how eureka is able to tell ribbon (loadbalancer) about what servers are available. 所以我们需要在EUREKA SERVER的工程配置文件里面加上这样的配置:

server:
  port: 8761
eureka:
  server:
    enable-self-preservation: false       # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 1000   # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
  client:
    register-with-eureka: false
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka

注意 eureka.client.fetch-registry=true 这句,非常重要,这是用ribbon来做负载均衡的,一定要启用。

对于第二个问题,可能是我自己一直忽略的问题,微服务断掉了,连接不上,是正常的。但我代码里面是加入了熔断fallback配置的,应该走到熔断哪里去呀。不应该报connection refused这样的错误呀。其实就是自己少了一个配置:
server:
  port: 3333

spring:
  application:
    name: client-consumer-feign

eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 15
  client:
    healthcheck:
      enabled: true
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
feign:
  hystrix:
    enabled: true     


注意最后面的feign.hystrix.enable=true, 这是启用熔断的开关,一定要开启。好了,搞定了这两点,很自然的熔断生效了。又浪费了两个小时,真是坑呀。后面,干脆把我的代码也上传上来做个备份。


spring-boot-microservice sample
spring-cloud-eureka-server
spring-cloud-feign-hystrix-sample

上一篇: spring-cloud eureka server 的发现客户端与注册例子
下一篇: Maven配置编译JDK版本
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号