1、创建一个maven项目 hystrix-feign-fallback-consumer
pom.xml
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.ym.springboot.facade</groupId>
<artifactId>feign-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
application.yml
spring:
application:
name: hystrix-feign-fallback-consumer
server:
port: 8082
eureka:
client:
serviceUrl:
defaultZone: http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/
instance:
prefer-ip-address: true #默认是hostname注册,改成IP注册
feign:
hystrix:
enabled: true #Feign默认是不开启hystrix
2、创建服务接口类
@FeignClient(name = "eureka-provider", fallback = StudentServiceFallback.class)
public interface StudentService{
@RequestMapping(value = "list", method = RequestMethod.GET)
public List<Student> list();
}
3、创建服务接口实现类
@Component
public class StudentServiceFallback implements StudentService{
@Override
public List<Student> list() {
List<Student> list = new ArrayList<Student>();
list.add(new Student("fallback",-1));
return list;
}
}
4、创建测试类
@RestController
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("list")
public List<Student> list(){
return studentService.list();
}
}