【Spring Cloud】使用Ribbon整合Hystrix

在spring cloud中,使用hystrix首先要添加依赖


	org.springframework.cloud
	spring-cloud-starter-hystrix

在spring boot的启动类上添加@EnableCircuitBreaker注解

@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
public class ConsumerMovieRibbonApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConsumerMovieRibbonApplication.class, args);
  }
}

在Controller类的映射方法上添加 @HystrixCommand注解,并指定fallback方法

@RestController
public class MovieController {
  @Autowired
  private RestTemplate restTemplate;

  @GetMapping("/movie/{id}")
  @HystrixCommand(fallbackMethod = "findByIdFallback")
  public User findById(@PathVariable Long id) {
    return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
  }

  public User findByIdFallback(Long id) {
    User user = new User();
    user.setId(0L);
    return user;
  }
}

当调用findById方法出现失败(抛出异常、超时、线程拒绝、短路)时,就会执行fallbackMethod 参数指定的findByIdFallback方法。
findByIdFallback方法的参数、返回值要与原findById方法的参数、返回值保持一致。

你可能感兴趣的:(spring,cloud学习)