package com.ruoyi.framework.config; import feign.*; import okhttp3.ConnectionPool; import okhttp3.OkHttpClient; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.support.SpringMvcContract; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.concurrent.TimeUnit; /** * openfeign配置类 * * @author Lion Li * @deprecated 由于使用人数较少 决定与 3.4.0 版本移除 */ @Deprecated @EnableFeignClients("${feign.package}") @Configuration @ConditionalOnClass(Feign.class) @AutoConfigureBefore(FeignAutoConfiguration.class) public class FeignConfig { @Bean public OkHttpClient okHttpClient(){ return new OkHttpClient.Builder() .readTimeout(60, TimeUnit.SECONDS) .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(120, TimeUnit.SECONDS) .connectionPool(new ConnectionPool()) .build(); } @Bean public Contract feignContract() { return new SpringMvcContract(); } @Bean public Logger.Level feignLoggerLevel() { return Logger.Level.BASIC; } @Bean public Request.Options feignRequestOptions() { return new Request.Options(10, TimeUnit.SECONDS, 60,TimeUnit.SECONDS,true); } @Bean public Retryer feignRetry() { 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; // } // } }