參考 周立 所著《SpringCloud與Docker微服務(wù)架構(gòu)實(shí)戰(zhàn)-完整版》
1舍肠、Feign使用Hystrix添加回退
Feign已經(jīng)默認(rèn)集成了Hystrix促脉,如果使用回退方法的話,可以為用Feign注解的接口增加一個(gè)實(shí)現(xiàn)類堵漱,然后對(duì)應(yīng)實(shí)現(xiàn)其方法,并在接口的@FeignClient注解上,添加上fallback屬性醉锅,值為實(shí)現(xiàn)類.class。
如下在Controller中調(diào)用Feign接口UserFeignClient
如下发绢,接口是UserFeignClient硬耍,上面注解@FeignClient里的name為調(diào)用的遠(yuǎn)程服務(wù),fallback的值為FeignClientFallback.class边酒,即為接口UserFeignClient的實(shí)現(xiàn)類的名字经柴。
如下為FeignClientFallback,實(shí)現(xiàn)了UserFeignClient接口墩朦。里面實(shí)現(xiàn)了findById方法坯认。
當(dāng)我現(xiàn)在調(diào)用UserFeignClient的findById方法時(shí),會(huì)出現(xiàn)如下情況氓涣,證明已經(jīng)實(shí)現(xiàn)了回退方法牛哺。
2、Hystrix監(jiān)控
在接口方法上的@FeignClient的注解里添加fallbackFactory屬性春哨,并添加對(duì)應(yīng)的值荆隘,該值為接口實(shí)現(xiàn)類,如下圖
實(shí)現(xiàn)類中要實(shí)現(xiàn)FallbackFactory赴背,并實(shí)現(xiàn)create方法椰拒,我們可以在create方法中返回接口的實(shí)現(xiàn)方法晶渠,并創(chuàng)建返回對(duì)象,打印出相應(yīng)的日志
其中有個(gè)問題是throwable可能為空燃观,這是Feign之前版本的一個(gè)bug褒脯,在9.4.0之后已經(jīng)解決。如我本地缆毁,停用了microservice-provider-user服務(wù)之后番川,在瀏覽器中訪問能返回對(duì)應(yīng)的對(duì)象,但是log日志中沒有對(duì)應(yīng)的reason