SpringCloud 프로젝트 통합 Feign,Hystrix 프로 세 스 분석

이 글 은 주로 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

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기