【SpringCloud】(十三):全局和单个禁用Feign Client对Hystrix的支持

来源:互联网 发布:知乎女神 编辑:程序博客网 时间:2024/05/08 16:23

  我们可以自定义配置Feign对Hystrix的支持。



  默认情况下:所有的Feign都支持Hystrix。但是我们可以自定义配置。

  全局禁用:在配置文件application.yml 中添加配置:feign.hystrix.enabled = false;

  当然我们也可以单个禁用。

  只需要在自定义的配置类中加入。

@Bean@Scope("prototype")public Feign.Builder feignBuilder() {return Feign.builder();}


  因为:默认支持的是HystrixFeign.Builder.而通过配置之后,返回的是Feign.builder去掉了对Hystrix的支持。


自定义配置类AuthConfiguration 

package com.dynamic.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Scope;import feign.Feign;import feign.auth.BasicAuthRequestInterceptor;@Configurationpublic class AuthConfiguration {@Beanpublic BasicAuthRequestInterceptor basicAuthRequestInterceptor() {return new BasicAuthRequestInterceptor("user", "pass123");}/** * 为什么加上这段就让Feign禁用了Hystrix. * Feign.Builder feignBuilder:HystrixHeign.Builder *  * @return */@Bean@Scope("prototype")public Feign.Builder feignBuilder() {return Feign.builder();}}


FeignClient2

package com.dynamic.cloud.feign;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import com.dynamic.config.AuthConfiguration;@FeignClient(name="xxx",url="http://localhost:8761/",configuration=AuthConfiguration.class,fallback =HystrixClientFallback2.class)public interface FeignClient2 {@RequestMapping(value="/eureka/apps/{serviceName}")public String findServiceInfoFromEurekaByServiceName(@PathVariable("serviceName") String serviceName);}


HystrixClientFallback2 
package com.dynamic.cloud.feign;import org.springframework.stereotype.Component;@Componentpublic class HystrixClientFallback2 implements FeignClient2 {@Overridepublic String findServiceInfoFromEurekaByServiceName(String serviceName) {System.out.println("禁用Feign");return "haha";}}


阅读全文
1 0