前言:

本篇博客是基于上一篇博客的再度扩展springcloud项目配置,Ribbon是用于实现负载均衡的,Hystrix是用于超时的方法返回一个兜底数据的。

Ribbon配置:

1. 在RestTemplate上加注解

@LoadBalanced

实现默认的负载均衡策略

2.实现RandomRule负载均衡策略

/**

* 创建RestTemplate交给容器

*/

@LoadBalanced

@Bean

public RestTemplate restTemplate() {

return new RestTemplate();

}

@Bean

public IRule ribbonRule() {

return new RandomRule();

}

熔断器配置:

所需依赖:

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

yml配置:

#设置熔断器的等待时间

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 3000;

#熔断器每个方法隔离采用的方式,线程池或者信号量 THREAD\SEMAPHORE

strategy: THREAD;

 实例演示:

@HystrixCommand(fallbackMethod ="getFallBackMethod")

@GetMapping("order/{id}")

public ResponseEntity selectOne(@PathVariable Long id) {

SysOrder order = orderService.getOrderById(id);

return ResponseEntity.ok(order);

}

在想要实现熔断器的方法上配置注解

@HystrixCommand(fallbackMethod ="熔断器方法名")

熔断器方法: 

/**

* 降级方法

* 该方法调用时机为原有方法超时 参数必须与原有方法保持一致

*/

public ResponseEntity getFallBackMethod(Long id){

// String s="你的请求太慢了";

// System.out.println("你的请求太慢了");

// return s;

SysOrder order = new SysOrder();

return ResponseEntity.ok(order);

}

 该方法为熔断器方法,原有方法超时则会执行该方法返回一个兜底数据

注:熔断器方法的方法参数和返回值要与原来方法保持一致。

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: