spring cloud RestTemplate消费者使用Hystrix进行容错和服务降级
2018-06-07 15:44
961 查看
spring cloud RestTemplate消费者使用Hystrix进行容错和服务降级
(1)消费者如下
要解决的问题:
(a)降级方法可以重定向吗?
可以.
?a 借助于org.springframework.web.client.RestTemplate
?b 使用HttpServletResponse
(b)降级的标准如何设置(重写)
设置调用者执行的超时时间(单位毫秒)
默认值:1000
注意事项:
(1)真实方法和降级方法除了方法名称不同,其他签名信息必须完全一样
例如consumer 有一个参数,那么fallback也必须有一个参数,否则报错:
(2)注解@HystrixCommand 不能加在控制器层,而应该加在Service 层
所以才专门抽取了一个Service 类:ConsumerService
(3)
代码:
https://github.com/liuyu520/SpringCloud-Learning-Dalston-/tree/master/eureka-consumer-ribbon-hystrix
(1)消费者如下
@RestController public class DcController { @Autowired ConsumerService consumerService; @GetMapping("/consumer") public String dc(Boolean delay) { return consumerService.consumer(delay); } @Service class ConsumerService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "fallback") public String consumer(Boolean delay) { System.out.println("consumer delay :" + delay); return restTemplate.getForObject("http://eureka-client/dc" + (null == delay ? "" : "?delay=" + delay), String.class); } public String fallback(Boolean delay) { System.out.println("fallback delay :" + delay); return "fallbck22"; } }
要解决的问题:
(a)降级方法可以重定向吗?
可以.
?a 借助于org.springframework.web.client.RestTemplate
public String fallback(Boolean delay) { return restTemplate.getForObject("http://eureka-client/client/hello/json",String.class); }
?b 使用HttpServletResponse
@RestController public class DcController { @Autowired ConsumerService consumerService; @GetMapping("/consumer") public String dc(Boolean delay, HttpServletRequest request, HttpServletResponse response) { return consumerService.consumer(delay, request, response); } @Service class ConsumerService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "fallback") public String consumer(Boolean delay, HttpServletRequest request, HttpServletResponse response) { System.out.println("consumer delay :" + delay); return restTemplate.getForObject("http://eureka-client/dc" + (null == delay ? "" : "?delay=" + delay), String.class); } public String fallback(Boolean delay, HttpServletRequest request, HttpServletResponse response) { System.out.println("fallback delay :" + delay); try { response.sendRedirect("error2.jsp"); } catch (IOException e) { e.printStackTrace(); } return null; } } }
(b)降级的标准如何设置(重写)
设置调用者执行的超时时间(单位毫秒)
默认值:1000
// 设置所有实例的默认值 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=... // 设置实例HystrixCommandKey的此属性值 hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds=...
注意事项:
(1)真实方法和降级方法除了方法名称不同,其他签名信息必须完全一样
例如consumer 有一个参数,那么fallback也必须有一个参数,否则报错:
(2)注解@HystrixCommand 不能加在控制器层,而应该加在Service 层
所以才专门抽取了一个Service 类:ConsumerService
(3)
代码:
https://github.com/liuyu520/SpringCloud-Learning-Dalston-/tree/master/eureka-consumer-ribbon-hystrix
相关文章推荐
- spring cloud 使用Hystrix 实现断路器进行服务容错保护的方法
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
- spring boot / cloud (八) 使用RestTemplate来构建远程调用服务
- SpringCloud 查找调用REST服务使用RestTemplate(ribbon负载)或feign模式 教程源码 火推
- Spring Cloud(服务的消费者 ribbon+restTemplate)
- springCloud(12):使用Hystrix实现微服务的容错处理-Hystrix的监控
- 玩转SpringCloud(F版本) 二.服务消费者(1)ribbon+restTemplate
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(七)服务容错保护(Hystrix服务降级)【Dalston版】
- spring boot / cloud (八) 使用RestTemplate来构建远程调用服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(包括使用 RestTemplate 与 REST 服务进行通信)
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(七)服务容错保护(Hystrix服务降级)【Dalston版】
- springcloud-hystrix容错保护注解方式的使用
- 微服务框架Spring Cloud: 在微服务系统中使用Hystrix, Hystrix Dashboard与Turbine
- SpringCloud使用Feign进行服务调用
- 笔记:Spring Cloud Hystrix 服务容错保护
- Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】
- Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)
- 微服务框架Spring Cloud介绍 Part5: 在微服务系统中使用Hystrix, Hystrix Dashboard与Turbine
- 使用Spring Cloud微服务框架进行多个微服务整合时出现No converter found for return value of type:xxx异常信息
- 使用spring RestTemplate进行rest接口测试