Sfoglia il codice sorgente

update 增加 feign 熔断 自定义结构体解析方法 与 demo 注释

疯狂的狮子li 4 anni fa
parent
commit
2704e921c8

+ 3 - 0
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

+ 36 - 0
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;
+//		}
+//	}
+
 }