请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

hystrix-feigin 容错机制没有生效

问题描述

  1. 按照视频的步骤对product完成ProductClient改造(启动order没有出现视频中出现的启动异常)
    • product: mvn clean install -Dmaven.test.skip=true -U
    • order: 从新刷新pom文件
    • 启动order没有出现视频中出现的启动异常
  2. Main类没有添加@CommonScan(“com.iooc”) 启动Order也不报错
    • 访问 /order/create 接口出现java.net.ConnectException: Connection refused: connect
    • 报错信息在下面 没有添加@CommonScan(“com.iooc”)
  3. Main类添加@CommonScan(“com.iooc”)
    • 访问 /order/create 接口出现com.netflix.client.ClientException: Load balancer does not have available server for client: product
    • 报错信息在下面 添加@CommonScan(“com.iooc”)
    • 这个问题我看了问答区发现同样异常 https://coding.imooc.com/learn/questiondetail/68316.html
      • 他的解决方法是添加 @EnableDiscoveryClient,但是我已经有 @SpringCloudApplication 里面包含了 @EnableDiscoveryClient,最终没有解决问题。
        相关版本信息
        spring boot: 2.0.0.M3
        spring cloud: Finchley.M2

图片描述

没有添加@CommonScan(“com.iooc”)

2018-12-13 17:06:26.095  INFO 4004 --- [nio-8200-exec-2] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@56746b94: startup date [Thu Dec 13 17:06:26 CST 2018]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@31aab981
2018-12-13 17:06:26.569  INFO 4004 --- [nio-8200-exec-2] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2018-12-13 17:06:28.055  INFO 4004 --- [nio-8200-exec-2] c.netflix.config.ChainedDynamicProperty  : Flipping property: product.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2018-12-13 17:06:28.195  INFO 4004 --- [nio-8200-exec-2] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook installed for: NFLoadBalancer-PingTimer-product
2018-12-13 17:06:28.257  INFO 4004 --- [nio-8200-exec-2] c.netflix.loadbalancer.BaseLoadBalancer  : Client: product instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2018-12-13 17:06:28.284  INFO 4004 --- [nio-8200-exec-2] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2018-12-13 17:06:28.381  INFO 4004 --- [nio-8200-exec-2] c.netflix.config.ChainedDynamicProperty  : Flipping property: product.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2018-12-13 17:06:28.388  INFO 4004 --- [nio-8200-exec-2] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client product initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product,current list of Servers=[WIN-MEHPHOPOV1M:8300],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:WIN-MEHPHOPOV1M:8300;	Zone:defaultZone;	Total Requests:0;	Successive connection failure:0;	Total blackout seconds:0;	Last connection made:Thu Jan 01 08:00:00 CST 1970;	First connection made: Thu Jan 01 08:00:00 CST 1970;	Active Connections:0;	total failure count in last (1000) msecs:0;	average resp time:0.0;	90 percentile resp time:0.0;	95 percentile resp time:0.0;	min resp time:0.0;	max resp time:0.0;	stddev resp time:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@1b150cef
2018-12-13 17:06:29.291  INFO 4004 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty  : Flipping property: product.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2018-12-13 17:06:55.113 ERROR 4004 --- [nio-8200-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.RetryableException: Connection refused: connect executing POST http://product/product/listForOrder] with root cause

java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_191]
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_191]

添加@CommonScan(“com.iooc”)
同时通过查看spring目前的bean列表也查询到 ProductClientFallback 这个bean已经加载到了上下文
图片描述

2018-12-13 17:11:04.389  INFO 7212 --- [nio-8200-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-12-13 17:11:04.389  INFO 7212 --- [nio-8200-exec-2] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2018-12-13 17:11:04.424  INFO 7212 --- [nio-8200-exec-2] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 35 ms
2018-12-13 17:11:08.407  INFO 7212 --- [nio-8200-exec-2] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@457c9b8e: startup date [Thu Dec 13 17:11:08 CST 2018]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@391d1e33
2018-12-13 17:11:08.441  INFO 7212 --- [nio-8200-exec-2] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2018-12-13 17:11:08.614  INFO 7212 --- [nio-8200-exec-2] c.netflix.config.ChainedDynamicProperty  : Flipping property: product.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2018-12-13 17:11:08.630  INFO 7212 --- [nio-8200-exec-2] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook installed for: NFLoadBalancer-PingTimer-product
2018-12-13 17:11:08.648  INFO 7212 --- [nio-8200-exec-2] c.netflix.loadbalancer.BaseLoadBalancer  : Client: product instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2018-12-13 17:11:08.653  INFO 7212 --- [nio-8200-exec-2] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2018-12-13 17:11:08.657  INFO 7212 --- [nio-8200-exec-2] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client product initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@4f9e2dcc
2018-12-13 17:11:08.765 ERROR 7212 --- [nio-8200-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: product] with root cause

com.netflix.client.ClientException: Load balancer does not have available server for client: product
	at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483) ~[ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.2.2.jar:2.2.2]
	at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.2.2.jar:2.2.2]

正在回答 回答被采纳积分+3

1回答

廖师兄 2018-12-14 13:36:30

"com.netflix.client.ClientException: Load balancer does not have available server for client: product"

这个错误是order去eureka上找不到product,心跳机制需要时间的。你也可以先启动product,再启动order

0 回复 有任何疑惑可以回复我~
  • 提问者 厚积薄发 #1
    product 启动后服务是可用的,廖师兄我是想验证
    order 请求 product的获取商品列表接口, 不启动 product 服务,然后让 ProductClientFallback 生效。
    回复 有任何疑惑可以回复我~ 2018-12-14 17:38:01
  • 廖师兄 回复 提问者 厚积薄发 #2
    你用我的源码运行一下呢?
    回复 有任何疑惑可以回复我~ 2018-12-17 12:54:45
  • 八轮 回复 提问者 厚积薄发 #3
    这个解决了吗
    回复 有任何疑惑可以回复我~ 2019-02-19 11:36:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信