feign本身是支持Hystrix的,所以不需要引入其他依赖:
我们可以看看feign这个项目的依赖,就是引入这个依赖的pom.xml
要想看这个很简单,点击那个依赖进去就可以了
点进去就可以看到
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-openfeign</artifactId> <version>2.1.0.RELEASE</version> <relativePath>..</relativePath> </parent> <artifactId>spring-cloud-starter-openfeign</artifactId> <name>Spring Cloud Starter OpenFeign</name> <description>Spring Cloud Starter OpenFeign</description> <url>https://projects.spring.io/spring-cloud</url> <organization> <name>Pivotal Software, Inc.</name> <url>https://www.spring.io</url> </organization> <properties> <main.basedir>${basedir}/../..</main.basedir> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-openfeign-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-core</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-slf4j</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-hystrix</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-java8</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-archaius</artifactId> <optional>true</optional> </dependency> </dependencies> </project>
是本身就支持的,所以直接使用就可以了:
使用很简单:
在yml文件中开启:
feign: hystrix: enabled: true
看之前写的调用接口:
package com.cxy.service; import com.cxy.dataObject.PersonDo; import com.cxy.service.impl.PersonServiceImpl; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @FeignClient(value = "cxy-person-service",fallback=PersonServiceImpl.class) public interface IPersonService { @RequestMapping("/person/{id}") PersonDo getPersonDoById(@PathVariable("id")Integer id); }
那个如果服务出现问题了就进入实现类的方法中
然后填写一个实体类就可以了:
package com.cxy.service.impl; import com.cxy.dataObject.PersonDo; import com.cxy.service.IPersonService; import org.springframework.stereotype.Component; /*** * @ClassName: PersonServiceImpl * @Description: * @Auther: 陈绪友 * @Date: 2019/1/2821:09 * @version : V1.0 */ @Component public class PersonServiceImpl implements IPersonService { @Override public PersonDo getPersonDoById(Integer id) { return new PersonDo(1,"1",1,"1"); } }
不启动person服务看结果:
是在实现类中的数据,代表生效了