From 2704e921c80baf212e74ddbf75a87c47e8a2679e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Sun, 4 Jul 2021 19:18:06 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=20feign=20=E7=86=94?= =?UTF-8?q?=E6=96=AD=20=E8=87=AA=E5=AE=9A=E4=B9=89=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BD=93=E8=A7=A3=E6=9E=90=E6=96=B9=E6=B3=95=20=E4=B8=8E=20dem?= =?UTF-8?q?o=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/fallback/FeignTestFallback.java | 3 ++ .../ruoyi/framework/config/FeignConfig.java | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/feign/fallback/FeignTestFallback.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/feign/fallback/FeignTestFallback.java index 3b4dfd0c..0f9e4002 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/feign/fallback/FeignTestFallback.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/feign/fallback/FeignTestFallback.java @@ -7,7 +7,10 @@ import org.springframework.stereotype.Component; /** * feign测试fallback + * 自定义封装结构体熔断 + * 需重写解码器 根据自定义实体 自行解析熔断 * + * @see {com.ruoyi.framework.config.FeignConfig#errorDecoder()} * @author Lion Li */ @Slf4j diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java index f10769bc..14db1c95 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FeignConfig.java @@ -54,4 +54,40 @@ public class FeignConfig { return new Retryer.Default(); } +// /** +// * 自定义异常解码器 +// * 用于自定义返回体异常熔断 +// */ +// @Bean +// public ErrorDecoder errorDecoder() { +// return new CustomErrorDecoder(); +// } +// +// +// /** +// * 自定义返回体解码器 +// */ +// @Slf4j +// public static class CustomErrorDecoder implements ErrorDecoder { +// +// @Override +// public Exception decode(String methodKey, Response response) { +// Exception exception = null; +// try { +// // 获取原始的返回内容 +// String json = JsonUtils.toJsonString(response.body().asReader(StandardCharsets.UTF_8)); +// exception = new RuntimeException(json); +// // 将返回内容反序列化为Result,这里应根据自身项目作修改 +// AjaxResult result = JsonUtils.parseObject(json, AjaxResult.class); +// // 业务异常抛出简单的 RuntimeException,保留原来错误信息 +// if (result.getCode() != 200) { +// exception = new RuntimeException(result.getMsg()); +// } +// } catch (IOException e) { +// log.error(e.getMessage(), e); +// } +// return exception; +// } +// } + }