SpringCloud服务消费者feign + hystrix
在父工程目录下创建一个maven项目,在这个maven项目中添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
</dependencies>
在配置文件application.yml中添加以下配置
eureka:
client:
serviceUrl:
defaultZone: http://localhost:7010/eureka/
server:
port: 11111
spring:
application:
name: feign-service
启动类
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run( FeignApplication.class, args );
}
}
Web层
@RestController
public class TestController {
@Autowired
FeignApi feignApi;
@GetMapping("/hi")
public String hi(@RequestParam String name){
return feignApi.hi(name);
}
}
feign接口
@FeignClient(name = "server02",fallbackFactory = FeignRemoteHystrix.class)
public interface FeignApi {
@GetMapping("/hi")
String hi(@RequestParam String name);
}
熔断类
@Component
public class FeignRemoteHystrix implements FeignApi {
@Override
public String hi(String name) {
return name+": 熔断";
}
}
依次启动Eureka、config-server、再启动本服务
在浏览器上访问http://localhost:11111/hi?name=按时 , 返回服务提供者的返回值
关闭服务提供者,返回 按时: 熔断