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

FeignClient服務(wù)器拋出異??蛻舳颂幚矸桨?/h1>
 更新時間:2022年06月16日 09:40:48   作者:飄逝才子  
這篇文章主要介紹了FeignClient服務(wù)器拋出異??蛻舳颂幚矸桨?,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

FeignClient服務(wù)器拋出異??蛻舳颂幚?/h2>

在使用feign進(jìn)行遠(yuǎn)程方法調(diào)用時,如果遠(yuǎn)程服務(wù)端方法出現(xiàn)異常,客戶端有時需要捕獲,并且把異常信息返回給前端,而如果在開啟熔斷之后,這個異常會被消化,所以說,如果希望拿到服務(wù)端異常,

feign.hystrix.enable需要設(shè)置為false,而當(dāng)不開熔斷時,我們也有幾種方法把拿到服務(wù)端的異常信息,下面總結(jié)一下。

feign異常攔截器

注冊一個Bean對象,當(dāng)feign調(diào)用出現(xiàn)異常的時候,會觸發(fā)這個方法:

import com.test.JsonUtils;
import feign.Response;
import feign.Util;
import feign.codec.ErrorDecoder;
import io.test.BadRequestException;
import io.test.InternalServerErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import static feign.FeignException.errorStatus;

/**
 * @author 飄逝才子
 * @date 2020/11/05
 * @description
 */
@Configuration
public class FeignClientErrorDecoder implements ErrorDecoder {
    private Logger logger = LoggerFactory.getLogger(FeignClientErrorDecoder.class);

    @Override
    public Exception decode(String methodKey, Response response) {
        Map<String, Object> jsonBody = new HashMap<>();
        jsonBody.put("message", "Internal server error");
        try {
            String body = Util.toString(response.body().asReader());
            jsonBody = JsonUtils.toMap(body);
        } catch (IOException e) {
            logger.error("feign.IOException", e);
        }
        assert jsonBody != null;
        if (response.status() >= 400 && response.status() < 500) {
            throw new BadRequestException(jsonBody.get("message").toString());
        }

        if (response.status() >= 500) {
            throw new InternalServerErrorException(jsonBody.get("message").toString());
        }

        return errorStatus(methodKey, response);
    }
}

注意,使用這個方式,需要在熔斷器關(guān)閉時才起作用,因?yàn)樗鼈兊膱?zhí)行過程是,先走這個攔截器,再走熔斷的fallback,所以這個異常會被熔斷吞掉,返回狀態(tài)為200,返回值為你的fallback的默認(rèn)值。

FeignClient異常合集Mark

問題1

feignClient調(diào)用報異常cause:Content-Type cannot contain wildcard type ‘*’

是因?yàn)檫h(yuǎn)程調(diào)用的時候入?yún)⒆R別不了application/json

解決辦法:在方法上加上類型即可consumes = MediaType.APPLICATION_JSON_VALUE

 @RequestMapping(value = "/xxx/xxx/xxx/xxx/xxx/xxx/result",method = RequestMethod.GET,  consumes = MediaType.APPLICATION_JSON_VALUE)
    ResponseResult xxx(TaskParam taskParam);

問題2

fallback 與fallbackFactory的使用

fallbackFactory:拋出異??刹榭?,一般看里面拋出的異常日志即可判斷遠(yuǎn)程調(diào)用的問題所在。

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

相關(guān)文章

  • jpa實(shí)現(xiàn)多對多的屬性時查詢的兩種方法

    jpa實(shí)現(xiàn)多對多的屬性時查詢的兩種方法

    這篇文章主要介紹了jpa實(shí)現(xiàn)多對多的屬性時查詢的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • idea中JRebel不生效問題及解決方案

    idea中JRebel不生效問題及解決方案

    這篇文章主要介紹了idea中JRebel不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解Spring Boot中Controller用法

    詳解Spring Boot中Controller用法

    Controller是SpringBoot里最基本的組件,他的作用是把用戶提交來的請求通過對URL的匹配,分配個不同的接收器,再進(jìn)行處理,然后向用戶返回結(jié)果。下面通過本文給大家介紹Spring Boot中Controller用法,需要的朋友參考下
    2017-05-05
  • Quartz集群原理以及配置應(yīng)用的方法詳解

    Quartz集群原理以及配置應(yīng)用的方法詳解

    Quartz是Java領(lǐng)域最著名的開源任務(wù)調(diào)度工具。Quartz提供了極為廣泛的特性如持久化任務(wù),集群和分布式任務(wù)等,下面這篇文章主要給大家介紹了關(guān)于Quartz集群原理以及配置應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • JavaWeb中的filter過濾敏感詞匯案例詳解

    JavaWeb中的filter過濾敏感詞匯案例詳解

    敏感詞、文字過濾是一個網(wǎng)站必不可少的功能,本篇文章主要介紹了JavaWeb中的filter過濾敏感詞匯案例,具有一定的參考價值,有需要的可以了解一下,
    2016-11-11
  • Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法

    Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法,需要的朋友可以參考下
    2015-11-11
  • 如何使用Java爬蟲批量爬取圖片

    如何使用Java爬蟲批量爬取圖片

    這篇文章主要介紹了如何使用Java爬蟲批量爬取圖片,對于爬蟲的入門來說,圖片相對來說是比較容易獲取的,因?yàn)榇蟛糠謭D片都不是敏感數(shù)據(jù),所以不會遇到什么反爬措施,對于入門爬蟲來說是比較合適的,需要的朋友可以參考下
    2023-04-04
  • Spring中的refresh方法分析

    Spring中的refresh方法分析

    這篇文章主要介紹了Spring中的refresh方法分析,文章圍繞主題展開詳細(xì)的refresh方法相關(guān)資料介紹,需要的小伙伴可以參考一下
    2022-05-05
  • IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié)

    IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié)

    這篇文章主要介紹了IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺析final,finally,finalize 的區(qū)別

    淺析final,finally,finalize 的區(qū)別

    以下是對final,finally,finalize的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09

最新評論

乐亭县| 龙海市| 嘉禾县| 布尔津县| 鄄城县| 东莞市| 永泰县| 印江| 巴东县| 崇阳县| 额尔古纳市| 徐汇区| 恩施市| 馆陶县| 闸北区| 太康县| 北京市| 宜川县| 安徽省| 甘孜县| 安龙县| 丰原市| 德兴市| 英德市| 通江县| 名山县| 民权县| 宜良县| 马龙县| 射洪县| 岑巩县| 淄博市| 江永县| 巴林右旗| 田阳县| 广平县| 白朗县| 苍梧县| 巴东县| 呼伦贝尔市| 临武县|