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

FeignClient服務器拋出異常客戶端處理方案

 更新時間:2022年06月16日 09:40:48   作者:飄逝才子  
這篇文章主要介紹了FeignClient服務器拋出異??蛻舳颂幚矸桨福哂泻芎玫膮⒖純r值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

FeignClient服務器拋出異常客戶端處理

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

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

feign異常攔截器

注冊一個Bean對象,當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);
    }
}

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

FeignClient異常合集Mark

問題1

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

是因為遠程調(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:拋出異??刹榭?,一般看里面拋出的異常日志即可判斷遠程調(diào)用的問題所在。

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

相關文章

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

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

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

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

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

    詳解Spring Boot中Controller用法

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

    Quartz集群原理以及配置應用的方法詳解

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

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

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

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

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

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

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

    Spring中的refresh方法分析

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

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

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

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

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

最新評論

军事| 襄城县| 盐源县| 广东省| 安阳市| 阿拉善盟| 凉城县| 西宁市| 石门县| 宁河县| 如皋市| 长岛县| 四川省| 盐亭县| 金塔县| 安龙县| 永登县| 韩城市| 磐石市| 卓资县| 图木舒克市| 炉霍县| 孝昌县| 新沂市| 海淀区| 淳化县| 江津市| 宿松县| 象山县| 柯坪县| 绥德县| 龙口市| 新建县| 高雄市| 固安县| 蕉岭县| 海口市| 宜宾市| 阿城市| 蓬安县| 东乡族自治县|