SpringCloud 프로젝트 통합 Feign,Hystrix 프로 세 스 분석
Feign 기능:이 서 비 스 는 소비자 입 니 다.서비스 에 등 록 된 Eureka 의 ID 에 따라 이 서 비 스 를 찾 고 인 터 페 이 스 를 호출 합 니 다.
Hystrix 기능:퓨즈,만약 A 서비스 가 B 서비스의/cities 인 터 페 이 스 를 호출 하여 데 이 터 를 가 져 올 필요 가 있다 면 A 서비스의 contrller 에서@Hystrix Command 를 설명 하고 B 서비스의/cities 인터페이스 가 끊 기 면 사용자 정의 값 을 되 돌려 줍 니 다.
프로젝트 구조
[root@node01 cloud]# tree weather/
weather/
├── Application.java #
├── controller
│ ├── CityController.java # , 127.0.0.1:8080/cities, cityClient
└── service
└── CityClient.java # , cityClient (interface)
Application.java
package com.waylau.spring.cloud.weather;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; #
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; # eureka
import org.springframework.cloud.netflix.feign.EnableFeignClients; # feign
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients # FeignClient
@EnableCircuitBreaker #
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
controller/CityController.java
package com.waylau.spring.cloud.weather.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.waylau.spring.cloud.weather.service.CityClient; # service/CityClient.java
@RestController
public class CityController {
@Autowired
private CityClient cityClient;
@GetMapping("/cities") # , 127.0.0.1:8080/cities
@HystrixCommand(fallbackMethod="defaultCities") # hystrix , fallbackMethod( ) , defaultCities
public String listCity() {
// Feign
String body = cityClient.listCity(); # service CityClient.java cityClient ,
return body; # , 127.0.0.1:8080/cities
}
public String defaultCities() {
return "City Data Server is down!";
}
}
service/City Client.java(소비자)Feign 으로 다른 인터페이스 로 데 이 터 를 가 져 옵 니 다.
package com.waylau.spring.cloud.weather.service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient("msa-weather-city") #msa-weather-city msa-weather-city eureka ID, ID msa-weather-city
public interface CityClient {
@GetMapping("/cities") # msa-weather-city /cities
String listCity(); # msa-weather-city /cities listCity()
}
application.properties
spring.application.name: micro-weather-eureka-client-feign-hystrix
eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
feign.client.config.feignName.connectTimeout: 5000
feign.client.config.feignName.readTimeout: 5000
테스트,조건 이 다른 서비스 로 사용 가능 할 때 저 희 는 호출 할 수 있 습 니 다.테스트.조건 이 다른 서비스 가 안 될 때 저 희 는 호출 할 수 없 기 때문에 fallback
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.