SpringCloud之Feign与Hystrix的整合

匿名 (未验证) 提交于 2019-12-03 00:30:01

配置信息

server:   port: 8010 spring:   application:     name: microservice-consumer-order eureka:   client:     serviceUrl:       defaultZone: http://localhost:8761/eureka/   instance:     prefer-ip-address: true  feign:   hystrix:     enabled: true # 说明:请务必注意,从Spring Cloud Dalston开始,Feign默认是不开启Hystrix的。 # 因此,如使用Dalston请务必额外设置属性:feign.hystrix.enabled=true,否则 断路器不会生效。 # 而,Spring Cloud Angel/Brixton/Camden中,Feign默认都是开启Hystrix的。 无需设置该属性。

UserFeignClient

/**  * Feign的fallback测试  * 使用@FeignClient的fallback属性指定回退类  */ @FeignClient(name = "microservice-provider-user",  fallback = FeignClientFallback.class/*,   configuration = FeignDisableHystrixConfiguration.class*/) public interface UserFeignClient {   @RequestMapping(value = "/{id}", method = RequestMethod.GET)   public User findById(@PathVariable("id") Long id);  }  /**  * 回退类FeignClientFallback需实现Feign Client接口  * FeignClientFallback也可以是public class,没有区别  */ @Component class FeignClientFallback implements UserFeignClient {   @Override   public User findById(Long id) {     User user = new User();     user.setId(-1L);     user.setUsername("默认用户");     return user;   } }

OrderController

@RestController public class OrderController {   @Autowired   private UserFeignClient userFeignClient;    @GetMapping("/user/{id}")   public User findById(@PathVariable Long id) {     return userFeignClient.findById(id);   } }

启动类不需要加Hystrix的注解,有配置文件配置

@EnableDiscoveryClient @SpringBootApplication @EnableFeignClients public class ConsumerOrderApplication {   public static void main(String[] args) {     SpringApplication.run(ConsumerOrderApplication.class, args);   } }

Feign禁用Hystrix

server:   port: 8010 spring:   application:     name: microservice-consumer-order eureka:   client:     serviceUrl:       defaultZone: http://localhost:8761/eureka/   instance:     prefer-ip-address: true  feign:   hystrix:     enabled: false # 说明:请务必注意,从Spring Cloud Dalston开始,Feign默认是不开启Hystrix的。 否则断路器不会生效。 # 而,Spring Cloud Angel/Brixton/Camden中,Feign默认都是开启Hystrix的。 无需设置该属性。
package com.tuling.cloud.study.user.feign;  import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;  import com.tuling.cloud.study.user.entity.User;  /**  * Feign的fallback测试  * 使用@FeignClient的fallback属性指定回退类  */ @FeignClient(name = "microservice-provider-user",  fallback = FeignClientFallback.class,   configuration = FeignDisableHystrixConfiguration.class) public interface UserFeignClient {   @RequestMapping(value = "/{id}", method = RequestMethod.GET)   public User findById(@PathVariable("id") Long id);  }  /**  * 回退类FeignClientFallback需实现Feign Client接口  * FeignClientFallback也可以是public class,没有区别  */ @Component class FeignClientFallback implements UserFeignClient {   @Override   public User findById(Long id) {     User user = new User();     user.setId(-1L);     user.setUsername("默认用户");     return user;   } }
/* * * 为Feign禁用Hystrix功能 * */   @Configuration public class FeignDisableHystrixConfiguration {        @Bean       @Scope("prototype")        public Feign.Builder feignBuilder() {           return Feign.builder();       }   }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!