天天看點

Spring Cloud 中 Hystrix熔斷器:實作線程隔離

Spring Cloud 中 Hystrix熔斷器:實作線程隔離

第一步

Spring Cloud 中 Hystrix熔斷器:實作線程隔離

第二步

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 "對不起,網絡太擁擠了!";
    }

}