Spring Cloud基礎教程(六):Feign熔斷器使用(Hystrix)
阿新 • • 發佈:2019-02-10
上一篇部落格講解了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函式。