Spring Cloud中Feign配置詳解

2021-08-29 07:14:25 字數 3583 閱讀 2896

到目前為止,小夥伴們對feign的使用已經掌握的差不多了,我們在前文也提到feign是對ribbon和hystrix的整合,那麼在feign中,我們要如何配置ribbon和hystrix呢?帶著這兩個問題,我們來看看本文的內容。

1.使用spring cloud搭建服務註冊中心

2.使用spring cloud搭建高可用服務註冊中心

3.spring cloud中服務的發現與消費

4.eureka中的核心概念

5.什麼是客戶端負載均衡

6.spring resttemplate中幾種常見的請求方式

7.resttemplate的逆襲之路,從傳送請求到負載均衡

8.spring cloud中負載均衡器概覽

9.spring cloud中的負載均衡策略

10.spring cloud中的斷路器hystrix

11.spring cloud自定義hystrix請求命令

12.spring cloud中hystrix的服務降級與異常處理

13.spring cloud中hystrix的請求快取

14.spring cloud中hystrix的請求合併

15.spring cloud中hystrix儀錶盤與turbine集群監控

16.spring cloud中宣告式服務呼叫feign

17.spring cloud中feign的繼承特性

# 設定連線超時時間

ribbon.connecttimeout=600

# 設定讀取超時時間

ribbon.readtimeout=6000

# 對所有操作請求都進行重試

ribbon.oktoretryonalloperations=true

# 切換例項的重試次數

ribbon.maxautoretriesnextserver=2

# 對當前例項的重試次數

ribbon.maxautoretries=1

這個引數的測試方式很簡單,我們可以在服務提供者的hello方法中睡眠5s,然後調節這個引數就能看到效果。下面的引數是我們配置的超時重試引數,超時之後,首先會繼續嘗試訪問當前例項1次,如果還是失敗,則會切換例項訪問,切換例項一共可以切換兩次,兩次之後如果還是沒有拿到訪問結果,則會報read timed out executing get http://hello-service/hello。 

但是這種配置是一種全域性配置,就是是對所有的請求生效的,如果我想針對不同的服務配置不同的連線超時和讀取超時,那麼我們可以在屬性的前面加上服務的名字,如下:

# 設定針對hello-service服務的連線超時時間

hello-service.ribbon.connecttimeout=600

# 設定針對hello-service服務的讀取超時時間

hello-service.ribbon.readtimeout=6000

# 設定針對hello-service服務所有操作請求都進行重試

hello-service.ribbon.oktoretryonalloperations=true

# 設定針對hello-service服務切換例項的重試次數

hello-service.ribbon.maxautoretriesnextserver=2

# 設定針對hello-service服務的當前例項的重試次數

hello-service.ribbon.maxautoretries=1

feign中hystrix的配置和ribbon有點像,基礎配置如下:

# 設定熔斷超時時間

hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds=10000

# 關閉hystrix功能(不要和上面的配置一起使用)

feign.hystrix.enabled=false

# 關閉熔斷功能

hystrix.command.default.execution.timeout.enabled=false

這種配置也是全域性配置,如果我們想針對某乙個介面配置,比如/hello介面,那麼可以按照下面這種寫法,如下:

# 設定熔斷超時時間

hystrix.command.hello.execution.isolation.thread.timeoutinmilliseconds=10000

# 關閉熔斷功能

hystrix.command.hello.execution.timeout.enabled=false

但是我們的介面名可能會重複,這個時候同名的介面會共用這一條hystrix配置。

@component

public class helloservicefallback implements helloservice

@override

public string hello(string name)

@override

public book hello(string name, string author, integer price)

@override

public string hello(book book)

}

這裡方法實現的邏輯都是相應的服務降級邏輯。然後在@feignclient註解中指定服務降級處理類即可,如下:

@feignclient(value = "hello-service",fallback = helloservicefallback.class)

public inte***ce helloservice

spring cloud feign支援對請求和響應進行gzip壓縮,以提高通訊效率,配置方式如下:

# 配置請求gzip壓縮

feign.compression.request.enabled=true

# 配置響應gzip壓縮

feign.compression.response.enabled=true

# 配置壓縮支援的mime type

# 配置壓縮資料大小的下限

feign.compression.request.min-request-size=2048

feign為每乙個feignclient都提供了乙個feign.logger例項,我們可以在配置中開啟日誌,開啟方式很簡單,分兩步:

# 開啟日誌 格式為logging.level.+feign客戶端路徑

logging.level.org.sang.helloservice=debug

第二步:入口類中配置日誌bean入口類中配置日誌bean,如下:

@bean

logger.level feignloggerlevel()

ok,如此之後,控制台就會輸出請求的詳細日誌。

SpringCloud微服務基礎4 Feign

spring cloud feign是一套基於netflix feign實現的宣告式服務呼叫客戶端。它使得編寫web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對web服務介面的繫結。它具備可插拔的註解支援,包括feign註解 jax rs註解。它也支援可插拔的編碼器和解碼...

SpringCloud中的gateWay 閘道器

1 api閘道器介紹 2 spring cloud gateway 3 spring cloud gateway核心概念 所有服務,都需要在nacos中註冊服務 包括閘道器 注意版本號 服務註冊nacos org.springframework.cloud groupid spring cloud ...

SpringCloud中eureka治理元件的原理

當新增了乙個eureka client元件到乙個springboot工程時,依賴,屬性,註解會啟動乙個eureka client程序,完成和服務端互動 1.1註冊 程式啟動時會攜帶自身的資訊,包括服務名稱,包括ip位址,包括埠號,等引數,以http協議請求訪問 defaultzone 可以通過 eu...