1. 程式人生 > >spring cloud 2.0 入門系列一 (4)斷路器-Hystrix

spring cloud 2.0 入門系列一 (4)斷路器-Hystrix

Spring Cloud Hystrix

Hystrix [hɪst’rɪks]的中文含義是豪豬, 因其背上長滿了刺,而擁有自我保護能力. Netflix的 Hystrix 是一個幫助解決分散式系統互動時超時處理和容錯的類庫, 它同樣擁有保護系統的能力.

服務說明

應用說明

使用框架

  • SpringBoot 2.0.3
  • SpringCloud Finchley.RELEASE

服務搭建

上一篇文章我們對Feign做簡單的介紹,我們在Feign的基礎上使用Hystrix

pom檔案修改

增加Hystrix依賴

<!-- hystrix斷路器 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

修改啟動檔案

增加註釋@EnableHystrix

增加FeignClient介面實現類

@Component
public class ExternalPersonServiceFallback implements ExternalPersonService {
    private static final Logger logger = LoggerFactory.getLogger(ExternalPersonServiceFallback.class);

    @Override
    public Person findPerson(String searchColumn, String searchValue) {
        logger.error("使用者服務呼叫失敗,請檢查相服務關節點是否異常!");
        Person person = new Person();
        person.setFdName("匿名使用者");
        person.setFdLoginName("anonymous");
        return person;
    }
}

修改FeignClient介面註釋

@FeignClient(value = "server-user", url = "http://localhost:8781", fallback = ExternalPersonServiceFallback.class)
public interface ExternalPersonService {

    /**
     * 查詢組織架構使用者
     *
     * @param searchColumn 查詢的欄位
     * @param searchValue  查詢的資料
     * @return
     */
    @RequestMapping(value = "/person/findPerson", method = RequestMethod.GET)
    public Person findPerson(@RequestParam("searchColumn") String searchColumn,
                             @RequestParam("searchValue") String searchValue);

}

測試

  • 呼叫介面應用啟動時呼叫正常程式;
  • 呼叫介面應用掉線時,呼叫fallback程式

示例