前言:
本篇博客是基于上一篇博客的再度扩展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();
}
熔断器配置:
所需依赖:
yml配置:
#设置熔断器的等待时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 3000;
#熔断器每个方法隔离采用的方式,线程池或者信号量 THREAD\SEMAPHORE
strategy: THREAD;
实例演示:
@HystrixCommand(fallbackMethod ="getFallBackMethod")
@GetMapping("order/{id}")
public ResponseEntity
SysOrder order = orderService.getOrderById(id);
return ResponseEntity.ok(order);
}
在想要实现熔断器的方法上配置注解
@HystrixCommand(fallbackMethod ="熔断器方法名")
熔断器方法:
/**
* 降级方法
* 该方法调用时机为原有方法超时 参数必须与原有方法保持一致
*/
public ResponseEntity
// String s="你的请求太慢了";
// System.out.println("你的请求太慢了");
// return s;
SysOrder order = new SysOrder();
return ResponseEntity.ok(order);
}
该方法为熔断器方法,原有方法超时则会执行该方法返回一个兜底数据
注:熔断器方法的方法参数和返回值要与原来方法保持一致。
相关链接
发表评论