第一步:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
第二步:
@EnableCircuitBreaker
第三步:
package com.example.order.controller; import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @Title: HystrixController * @ProjectName order * @date 2019/12/1911:34 */ @RestController @DefaultProperties(defaultFallback = "defaultFallback") // 默认调用的方法名 public class HystrixController { // 超时配置 @HystrixCommand//(commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")}) @GetMapping("/getProductInfoList") public String getProductInfoList() { RestTemplate restTemplate = new RestTemplate(); return restTemplate.postForObject("http://127.0.0.1:8080/product/list", null, String.class); // throw new RuntimeException("发送异常了"); } /** * 默认方法名, 如果8080服务不通,会调用 * @return */ private String defaultFallback() { return "默认提示:太拥挤了, 请稍后再试~~"; } }
yml 配置方式(方法不需要单独配置)
hystrix: command: # 配置超时时间 default: execution: isolation: thread: timeoutInMilliseconds: 1000 getProductInfoList: # 给方法名称单独添加超时时间 execution: isolation: thread: timeoutInMilliseconds: 3000
原文地址:https://www.cnblogs.com/412013cl/p/12066944.html
时间: 2024-10-20 09:54:59