微服務消費端通過feign呼叫微服異常問題

2021-08-14 23:16:48 字數 844 閱讀 5898

在專案開發中,我們的呼叫方通過feign呼叫微服時,如果微服出現業務異常(例如空指標,或拋出自定義的異常)和非業務異常(引數不合法4xx異常)都會進入到呼叫方的全域性異常***,丟擲的code全部轉換成了500,這樣不友好

實際上只有業務異常feign才會轉換成500錯誤且轉成feignexception,空指標不會暴露給呼叫者

記錄一次坑,feign的沒有觸發fallback原因

@feignclient的fallbackfactory寫成了fallback屬性,在呼叫方開啟feign熔斷
feign:

hystrix:

enabled: true

這樣微服暴露的異常只會在控制台列印,但是進入了fallback返回了預設值,不至於呼叫方執行緒中斷

當開啟feign的hystrix配置,同時在啟動類上新增@enablecircuitbreaker 開啟服務的熔斷時

熔斷的方法引數要一致,否則會拋異常!

若提供方微服務出現異常,則會走到降低邏輯,而不會進入熔斷!

若提供方微服務正常返回資料,呼叫方出現異常,則會觸發方法的熔斷!

總結:feign中也內建了對hystrix的支援,開啟feign的hystrix是針對呼叫微服務的降級處理

而@hystrixcommand註解

是針對自身方法的異常,方法級別的熔斷處理!

服務降級:是主邏輯失敗採用備用邏輯的過程,

服務熔斷:因短時間內多次失敗,而被暫時性的忽略,不再使用

微服務通過Feign呼叫進行密碼安全認證

在專案中,微服務之間的通訊也是通過feign 的http客戶端通訊,為了保護我們的業務微服務不被其他非法未經允許的服務呼叫,我們要進行訪問授權配置 feign是客戶端配置,feignclient註解有個configuation屬性,可以配置我們自定義的配置類,在此類中注入微服務認證 訪問微服務需要密...

Feign 微服務互相呼叫 概念

一 feign 1 基本概念 feign是netflix開發的宣告式 模板化的http客戶端,feign可以幫助我們更快捷 優雅地呼叫http api。feign支援多種註解,例如feign自帶的註解或者jax rs註解等。spring cloud對feign進行了增強,使feign支援了sprin...

微服務宣告式呼叫元件 Feign

宣告式rest客戶端 採用基於介面的註解方式 注意 是在服務呼叫方去宣告介面,然後跟服務提供方的api進行對應,這樣就可以呼叫了 org.springframework.cloud spring cloud starter openfeign 啟動類新增註解 enablefeignclients 此...