척하기 기능 :이 등록 서비스에 따른 소비자 인 유레카 의 ID 인터페이스 서비스와 통화를 찾을
Hystrix가 기능 : 퓨즈 경우 서비스 요구가 호출 B의 / 서비스를 도시 에이어서, 데이터를 얻기 위해 인터페이스 서비스 컨트롤러 성명에서이 @HystrixCommand 경우, B의 서비스 / 도시 인터페이스를 끊었, 그것은 사용자 정의 값을 반환
프로젝트 구조
[루트 @ node01 클라우드] # 트리 날씨 날씨 / 날씨 날씨 / ├── Application.java # 주요 프로그램은 입구 시작 ├── 컨트롤러 와 같은 액세스 127.0.0.1:8080/cities으로 제어, 라우팅 │ ├── CityController.java 번호, 여기에 전화 cityClient 방법 └── 서비스 └── 여기 cityClient 구현 방법 (인터페이스) CityClient.java #의 구체적인 방법을 구현
Application.java
패키지 com.waylau.spring.cloud.weather; 오기 org.springframework.boot.SpringApplication; 오기 org.springframework.boot.autoconfigure.SpringBootApplication; 오기 org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker #의 퓨즈 혼입 오기 ORG .springframework.cloud.client.discovery.EnableDiscoveryClient는 #은 유레카는 스스로 찾을 수 있도록 가져 오기 org.springframework.cloud.netflix.feign.EnableFeignClients을 #는 척하기 소개 @SpringBootApplication @EnableDiscoveryClient의 @EnableFeignClients 번호는 프로그램이 FeignClient 소개 선언 @EnableCircuitBreaker 번호가 선언 퓨즈 프로그램 소개 공공 클래스 응용 프로그램 { 공공 정적 무효 메인 (문자열 []에 args) { SpringApplication.run (애플리케이션. 클래스 , 인수); } }
제어기 / CityController.java
패키지 com.waylau.spring.cloud.weather.controller을; 수입 org.springframework.beans.factory.annotation.Autowired; 수입 org.springframework.web.bind.annotation.GetMapping; 수입 org.springframework.web.bind.annotation.RestController; 수입 com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; 수입 com.waylau.spring.cloud.weather.service.CityClient; #引用서비스 / CityClient.java @RestController 공공 클래스 CityController { @Autowired 개인 CityClient cityClient; (@GetMapping "/ 도시" ) #控制路由,比如访问127.0.0.1:8080/cities을 @HystrixCommand (fallbackMethod = "defaultCities" ) 다른 서비스 설정 hystrix 퓨즈에 #을, 또 다른 서비스가 걸린 경우 fallbackMethod (콜백 메소드)를 선언, 호출 defaultCities 방법 공공 문자열 listCity () { // 척하기 클라이언트 검색 문자열 본체 = cityClient.listCity를 (); cityClient 방법 CityClient.java, 도시 데이터에 대한 액세스에 # 통화 서비스 리턴 몸; # 반환 방문 127.0.0.1:8080/cities 도시가 데이터를 반환 할 수있을 것 } 공공 문자열 defaultCities을 () { 반환 "시 데이터 서버 다운!" ; } }
서비스 / CityClient.java (소비자)
다른 인터페이스 척하기에 데이터를 취득
패키지 com.waylau.spring.cloud.weather.service, 가져 오기 org.springframework.cloud.netflix.feign.FeignClient, 가져 오기 org.springframework.web.bind.annotation.GetMapping, @FeignClient ( "MSA-날씨 - 도시" ) # MSA-날씨 도시 ID의 유레카 등록에 MSA-날씨 도시 서비스는, 당신은이 마이크로 ID를 통해 MSA-날씨 도시 서비스에 액세스 할 수있는 공용 인터페이스 CityClient { @GetMapping ( "/ 도시" ) # 호출 MSA-날씨 마이크로에서 - 도시 서비스 / 도시 인터페이스 문자열 listCity (); 마이크로의 # 호출 MSA-날씨 도시 서비스 / 인터페이스 listCity () 메소드의 도시 }
application.properties
spring.application.name : 마이크로 날씨 - 유레카 - 클라이언트 feign- hystrix eureka.client.serviceUrl.defaultZone : HTTP : // localhost를 : 8761 / 유레카 / feign.client.config.feignName.connectTimeout : 5000 feign.client. config.feignName.readTimeout : 5000
테스트, 조건이 우리가 호출 할 수 있으며, 다른 서비스로 볼 수 있습니다
조건을 테스트하는 것은 대체, 그래서 우리가 호출되지 다른 서비스, 아니다