最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Feign獲取異常信息的處理方案

 更新時(shí)間:2021年08月27日 14:03:54   作者:一顆小隕石  
這篇文章主要介紹了解決Feign獲取異常信息的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Feign獲取異常信息

最近在使用Feign調(diào)用時(shí),出現(xiàn)了異常,原本使用的是fallback,直接返回了自定義的結(jié)果

@Override
    public Result findUserNameById(String id) {
        return new Result(false, StatusCode.ERROR,"啊哦,用戶客戶端出現(xiàn)了異常");
    }

但是無法獲取具體的異常信息

解決方案

將fallback換成fallbackFactory

一、客戶端接口指定熔斷器處理工廠類

/**
 * @author 
 * @date 2019/9/2215:37
 */
@FeignClient(value = "weblog-article",fallbackFactory = ArticleFallBackFactory.class,configuration = FeignInterceptor.class)
public interface ArticleClient {
    /**
     * 根據(jù)文章id封裝搜索文章實(shí)體
     * @param aid
     * @return
     */
    @GetMapping("article/client/packageArticle/{aid}")
    Result packageArticle(@PathVariable("aid") String aid);
}

二、ArticleFallBackFactory

/**
 * @author yunshi
 * @date 2019/10/2010:37
 */
@Component
public class ArticleFallBackFactory implements FallbackFactory<ArticleClient> {
    @Override
    public ArticleClient create(Throwable throwable) {
        System.out.println("搜索微服務(wù)調(diào)用文章客戶端出錯(cuò):"+throwable.getMessage()==null?"":throwable.getMessage());
        throwable.printStackTrace();
        return new ArticleClientImpl() {
            @Override
            public Result packageArticle(String aid) {
                return new Result(false, StatusCode.ERROR,"搜索微服務(wù)調(diào)用文章客戶端出錯(cuò) method:packageArticle");
            }
        };
    }
}

有時(shí)候throwable的getMessage沒有捕獲到個(gè)別異常信息,干脆就直接打印了堆棧信息

三、ArticleClientImpl

/**
 * @author yunshi
 * @date 2019/9/2215:41
 */
public interface ArticleClientImpl extends ArticleClient {
    
}

實(shí)操可用~

Feign中 fallback獲取400等異常信息及message

Spring cloud中當(dāng)調(diào)用第三接口的時(shí)候,為防止超時(shí)一直等待,我們一般用斷路由的方式來進(jìn)行超時(shí)返回,我一般用Spring Cloud Hystrix。在調(diào)用第三方的地方進(jìn)行fallback進(jìn)行聲明,然后重新fallback函數(shù),配置超時(shí)時(shí)間,在超時(shí)時(shí)間內(nèi)容沒有返回或者參數(shù)錯(cuò)誤就進(jìn)人到fallback里面進(jìn)行處理。具體的做法,網(wǎng)上一大堆,可自行百度。

然后第三方接口,在參數(shù)錯(cuò)誤的時(shí)候,也是按400返回,尤其是json里面的數(shù)據(jù)key對(duì)應(yīng)的value的合法性。而我們出錯(cuò)的時(shí)候想把第三參數(shù)的錯(cuò)誤信息返回,這樣就能很明確知道哪錯(cuò)了,而不是認(rèn)為是超時(shí),下面進(jìn)入正題:

1.調(diào)用第三方的方法

fallbackFactory中調(diào)用自己重寫的fallback,熔斷時(shí)會(huì)自動(dòng)調(diào)用。

2.fallback函數(shù)返回值的組合

自己重寫的熔斷函數(shù)中,重新create函數(shù),其中throwable 會(huì)記錄捕獲的所有異常,我們通過getMessage可得到我們的信息,具體可以參考FallbackFactory接口的實(shí)現(xiàn)。

3.返回值

把fallback函數(shù)的返回值反倒返回值的msg中返回,這樣調(diào)用接口的時(shí)候就可以得到第三方返回的錯(cuò)誤信息,進(jìn)行調(diào)整了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot源碼中this::selfInitialize怪異用法的含義解析

    springboot源碼中this::selfInitialize怪異用法的含義解析

    這篇文章主要介紹了springboot源碼中this::selfInitialize怪異用法的含義解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • libsvm支持向量機(jī)回歸示例

    libsvm支持向量機(jī)回歸示例

    這篇文章主要介紹了libsvm支持向量機(jī)回歸示例,需要的朋友可以參考下
    2014-05-05
  • JAVA二叉樹的基本操作

    JAVA二叉樹的基本操作

    這篇文章主要介紹了JAVA二叉樹的基本操作DEMO,想要詳情了解的小伙伴請(qǐng)接著看下文吧
    2021-08-08
  • 一文詳解Java中Map和Set接口的使用方法

    一文詳解Java中Map和Set接口的使用方法

    Map和set是一種專門用來進(jìn)行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),其搜索的效率與其具體的實(shí)例化子類有關(guān),可能在查找時(shí)進(jìn)行一些插入和刪除的操作,即動(dòng)態(tài)查找,那上述兩種方式就不太適合了,本節(jié)介紹的Map和Set是一種適合動(dòng)態(tài)查找的集合容器,需要的朋友可以參考下
    2024-08-08
  • sentinel?整合spring?cloud限流的過程解析

    sentinel?整合spring?cloud限流的過程解析

    這篇文章主要介紹了sentinel?整合spring?cloud限流,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • jpa實(shí)體@ManyToOne @OneToMany無限遞歸方式

    jpa實(shí)體@ManyToOne @OneToMany無限遞歸方式

    這篇文章主要介紹了jpa實(shí)體@ManyToOne @OneToMany無限遞歸方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Springboot 集成 lombok.jar過程解析

    Springboot 集成 lombok.jar過程解析

    這篇文章主要介紹了Springboot 集成 lombok.jar過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • springboot?vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增

    springboot?vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增

    這篇文章主要為大家介紹了springboot?vue項(xiàng)目管理后端實(shí)現(xiàn)接口新增,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 使用java模擬簡(jiǎn)單的tomcat的方法詳解

    使用java模擬簡(jiǎn)單的tomcat的方法詳解

    這篇文章主要為大家詳細(xì)介紹了java模擬簡(jiǎn)單的tomcat的方法,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • JDBC自定義連接池過程詳解

    JDBC自定義連接池過程詳解

    這篇文章主要介紹了JDBC自定義連接池過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

扬中市| 石景山区| 贵南县| 牟定县| 绥滨县| 凌源市| 龙泉市| 桓台县| 青浦区| 明星| 耿马| 沂源县| 东辽县| 南投市| 防城港市| 郁南县| 长岭县| 道真| 武隆县| 吉林省| 田阳县| 西乡县| 含山县| 临洮县| 汝州市| 稻城县| 荃湾区| 阿拉善左旗| 资兴市| 格尔木市| 文化| 建始县| 万州区| 新闻| 娱乐| 达日县| 综艺| 绿春县| 台湾省| 宿松县| 巴东县|