1. 程式人生 > >Spring Cloud基礎教程(六):Feign熔斷器使用(Hystrix)

Spring Cloud基礎教程(六):Feign熔斷器使用(Hystrix)

上一篇部落格講解了Ribbon使用Hystrix,本篇部落格講解下Feign使用Hystrix。

一、準備

服務消費者(Ribbon)使用部落格中的Consumer-Ribbon工程,複製一份,命名為Consumer-Ribbon-Hystrix。

二、工程修改

Feign是自帶斷路器的,在D版本的Spring Cloud中,它沒有預設開啟。需要在配置檔案中配置開啟它,在配置檔案加以下程式碼,feign.hystrix.enabled=true。

spring.application.name=consumer-feign-hystrix
server.port=10009
eureka.client.serviceUrl.defaultZone=http://localhost:10001/eureka/

feign.hystrix.enabled=true

工程gradle依賴為

dependencies {
	compile('org.springframework.boot:spring-boot-starter-web')
	compile('org.springframework.cloud:spring-cloud-starter-feign:1.4.4.RELEASE')
	compile('org.springframework.cloud:spring-cloud-starter-eureka:1.4.4.RELEASE')
	compile('org.springframework.cloud:spring-cloud-starter-ribbon:1.4.4.RELEASE')
	testCompile('org.springframework.boot:spring-boot-starter-test')
}

新建ConsumerServiceHystric熔斷器處理類,實現ConsumerService介面

import org.springframework.stereotype.Component;

/**
 * Created by wzj on 2018/5/21.
 */
@Component
public class ConsumerServiceHystric implements ConsumerService
{
    @Override
    public String client()
    {
        return "Consumer feign [client] error";
    }
}

修改ConsumerService介面類,新增fallback異常處理回撥。

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Created by wzj on 2018/5/20.
 */
@FeignClient(value = "service-producer",fallback = ConsumerServiceHystric.class)
public interface ConsumerService
{
    @RequestMapping(value = "/client",method = RequestMethod.GET)
    String client();
}

ConsumerFeignApplication啟動類和ConsumerController不變。

三、測試

啟動Eureka-Server、Service-Producer-A和該工程,瀏覽器訪問http://127.0.0.1:10009/consumer,服務可以正常呼叫。


關閉Service-Producer-A服務,再次訪問,服務調用出現問題,自動訪問fallback函式。