首頁 > 軟體

解決引入spring-cloud-starter-openfeign後部分類找不到的問題

2022-03-04 13:02:47

引入spring-cloud-starter-openfeign後部分類找不到

今天遇到一個奇怪的問題

pom中已經引入了spring-cloud-starter-openfeign依賴。

	<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>

但是程式碼中提示FeignClient類找不到。

原因

我用的aliyuMaven倉庫,發現spring-cloud-starter-openfeign與spring官方倉庫不一樣。

解決方案

刪除本地倉庫這個jar包,setting.xml檔案中先刪除aliyun私服,以及公司的私服【因為大部分公司的私服都使用aliyun proxy.】加上spring私服,當然,如果你專案總的pom檔案中設定了私服位置,同樣道理需要變更。

然後,更新maven依賴,下載好後再復原setting檔案。

spring-cloud-starter-openfeign效能優化

設定 HttpClient 或者 OKHttp

在預設情況下 spring cloud feign在進行各個子服務之間的呼叫時,http元件使用的是jdk的HttpURLConnection,沒有使用執行緒池。有2種可選的執行緒池:HttpClient 和 OKHttp

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>11.0</version>
</dependency>

或者

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
    <version>11.0</version>
</dependency>

設定引數

feign:
  httpclient:
    enabled: true
    # feign最大連線數
    max-connections: 200
    # feign單個路徑的最大連線數
    max-connections-per-route: 50

或者

feign:
  okhttp:
    enabled: true
    # feign最大連線數
    max-connections: 200
    # feign單個路徑的最大連線數
    max-connections-per-route: 50

紀錄檔級別

在生產環境,需要列印feign的紀錄檔,使用basic級別就ok了,強烈不建議使用full。列印紀錄檔太多,消耗feign的效能。

feign:
  client:
    config:
      default:
        loggerLevel: basic

親測紀錄檔級別從full改為basic,高並行時, 介面QPS提升30%+

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com