Spring Cloud 中 Hystrix熔斷器:實作線程隔離
第一步
第二步
第三步
編寫降級邏輯
-
當目标服務的調用出現故障,我們希望快速失敗,給使用者一個友好提示。是以需要提前編寫好失敗時的降級處理邏輯,要使用@HystixCommond注解來完成。改造ConsumerController:
下面展示一些
。内聯代碼片
// A code block
var foo = 'bar';
package cn.itcast.comsumer.controller;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
/** 注入發現者 */
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/getUser")
@HystrixCommand(defaultFallback = "getUserFallBack") //這個注解用來聲明一個降級邏輯的方法,加在方法上和類上面都可以
public String getUser(Long id){
String url = "http://user-server/getUser?id="+id;
return restTemplate.getForObject(url,String.class);
}
public String getUserFallBack(Long id){
return "對不起,網絡太擁擠了!";
}
}