一、異常信息
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one
二、分析原因
我的這個異常出現場景是這樣的(我采用的是Spring Cloud中Feign組件來實現服務間調用的):
有兩個服務A和B,A調用B(A->B)。
場景一:先啟動了A,再啟動了B。但是這時候,怎么都調用不到B。
場景二:先啟動B,再啟動A,這是可以正常調用。然后掛掉B,再重啟。之后就怎么也調用不到B了。
也就是從注冊中心,獲取不到B注冊的相關地址信息。
三、解決方案
在application.yml或bootstrap.yml中加入如下配置:
--設置property ribbon.eureka.enable=false將會明確的讓Eureka的ribbon失效。
--我們這里需要手動開啟它
ribbon: eureka: enabled: true