开发时本地feign调式技巧,feign重试配置

本地调试时指定本地windows启动的feign调用,屏蔽测试环境的服务干扰

@Component
@Data
public class Debug {
    /**
     * 测试 Feign
     */
    public static void initConfigFeign() {
        // 设置全局变量指定url,可以根据自己需求配置多个
        System.setProperty("config.debug.url.test", "http://127.0.0.1:8081");
        // 设置本地项目启动后不注册到eureka上
        System.setProperty("eureka.client.register-with-eureka", "false");
    }

    public static boolean getDebug() {
        // 我的系统是windows时候上述配置生效,看你系统自己调就行,因为我的服务器都是linux.  本机调试才需要上面的配置生效
        String os = System.getProperties().getProperty("os.name");
        return (null != os && os.toLowerCase().contains("windows"));
    }
}
@SpringBootApplication
@EnableFeignClients
public class TestApplication{
	// 要在启动类加载上面的配置
    public static void main(String[] args) {
        if (Debug.getDebug()) {
            Debug.initConfigFeign();
        }

        SpringApplication.run(TestApplication.class, args);
    }

}
// url关联到上面配置中的url
@FeignClient(value = "user-test",url = "${config.debug.url.test}",configuration ={FeignConfig.class})
@Configuration
@Slf4j
public class FeignConfig {
    /**
     * 配置请求重试
     * 第三个参数可以设置重试次数,按自己需求来就行,设置0不重试
     */
    @Bean
    public Retryer feignRetryer() {
        log.info("feignConfig....>>>>feignRetryer...........");
        return new Retryer.Default(200, 200, 0);
    }

    /**
     * 设置请求超时时间
     * 默认
     * public Options() {
     * this(10 * 1000, 60 * 1000);
     * }
     */
    @Bean
    Request.Options feignOptions() {
        return new Request.Options(5 * 1000, 60 * 1000);
    }
    
    /**
     * 关闭feign重试
     */
    @Bean
    public Feign.Builder feignBuilder() {
        return Feign.builder().retryer(Retryer.NEVER_RETRY);
    }
    
    /**
     * 打印请求日志
     * NONE,无记录(DEFAULT)
     * BASIC,只记录请求方法和URL以及响应状态代码和执行时间
     * HEADERS,记录基本信息以及请求和响应标头
     * FULL,记录请求和响应的头文件,正文和元数据
     * @return
     */
    @Bean
    public Logger.Level multipartLoggerLevel() {
        return Logger.Level.FULL;
    }
}

版权声明:本文为xiaoqiqilang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。