feign Load balancer does not have available server for client


記錄一個問題,

搭建Spring cloud 使用 feign 發現一個困擾了我一個小時的問題: feign Load balancer does not have available server for client 

對於這個錯誤,網上相關帖子怎么說的都有,我只是記錄一下我怎么解決,各位大神不喜勿噴

首先這個錯誤 (如果前面步驟,自己檢查沒問題,那么依次看下一個)

第一步,檢查Eureka 服務列表 服務名字配置的是什么 (網上帖子,有說配置instance.appname/hostname的都是無效的)

spring:
  application:
    name: xxx
// 該注解不區分大小寫
@FeignClient(name = "xxx/XXX")

第二步:檢查是否引入 Ribbon(必須)

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

原本我引入的是Openfeign,我以為feign底層就是Ribbon就不需要額外引入(而且查看了Maven確實引入了)

 

 第三步: 如果原本引入Eureka-client 

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>3.0.0</version>
        </dependency>

請替換

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.5.RELEASE</version>
        </dependency>

 

通過上面幾步就可以解決掉這個報錯

另外延伸幾點

第一: 網上有說可以使用

  ribbon:
    listOfServers: http://localhost:8081

上面這段配置,是給那些沒有使用Eureka的項目 手動設置的ribbon請求地址。這樣相當於給了一個很明確的地址,所以解決掉最開始說的這個錯誤是可以的(但是不根本)Eureka維護提供者/消費者列表,消費者可以去獲得服務列表,如果是靠這種手動的配置去獲取,那相當於失去了Eureka一個功能

第二: 有人說通過 如下配置,解決最開始的錯誤信息,首先這個配置自行百度是干嘛的,其次即使不設置這個值,默認就是true

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM