1、POM配置
和普通Spring Boot工程相比,添加了Eureka Client、Feign、Hystrix、Spring Boot Starter Actuator依赖和Spring Cloud依赖管理
<dependencies> <!--Eureka Client依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!--声明式服务消费--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <!-- 整合断路器hystrix,其实feign中自带了hystrix,引入该依赖主要是为了使用其中的hystrix-metrics-event-stream,用于dashboard --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <!--Spring Boot工程健康检测--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies><!--Spring Cloud依赖版本管理--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
02、使能
@SpringBootApplication@EnableFeignClients //声明式服务消费@EnableCircuitBreaker //断路器@EnableDiscoveryClient //Eureka客户端 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
03、src/main/resources工程配置文件 application.yml
server: port: 8020 #默认启动端口spring: application: name: microservice-consumer #服务名eureka: client: serviceUrl: defaultZone: http://peer1:1001/eureka/ #服务注册中心地址 instance: preferIpAddress: true #使用IP注册,而非hostname
04、声明式服务消费
@FeignClient(name = "microservice-consumer-hello", fallback = HystrixClientFallback.class) public interface HelloFeignClient { @RequestMapping("/") public String hello(); @Component static class HystrixClientFallback implements HelloFeignClient { @Override public User hello() { return "异常发生,断路器打开"; } } }
05、Controller
@RestController public class FeignController { @Autowired private HelloFeignClient helloFeignClient; @GetMapping("feign") public String hello() {return this.helloFeignClient.hello(); } }
时间: 2024-08-03 22:19:33