봄 클라우드 VII | 선언적 서비스 호출 척하기

이 문서에서는 봄 클라우드 열입니다 제목 : VII 배울 기사를 처음 여섯 문서 내용을 기사의 더 나은 이해에 기여 :

  1. 봄 클라우드 첫 번째 게시물 | 봄 클라우드 서문 및 공통 구성 요소 요약

  2. 두 번째 봄 클라우드 | 유레카 레지스트리의 사용과 이해

  3. 봄 클라우드 파트 III는 | 유레카 등록 센터는 고 가용성을 설정

  4. 봄 클라우드 파트 IV | 클라이언트로드 밸런싱 리본

  5. 봄 클라우드 파트 V | 서비스 Hystrix 날려

  6. 봄 클라우드 파트 VI | Hystrix Hystrix 대시 보드 대시 보드 모니터

척하기 무엇 첫째,

    척하기 넷플릭스가 개발 REST 클라이언트가 선언적 호출이다 리본로드 밸런싱을 Hystrⅸ 서비스 퓨즈 공정에 사용되는 마이크로 아주 기본 구성 요소에있는 우리의 봄 클라우드 서비스 개발, 우리는 또한 일반적으로 동시에 발생하는 것을 발견 및 구성은 봄 넷플릭스 척하기는 리본과 Hystrix 두 가지 구성 요소를 통합 클라우드 기반 그래서 봄 부팅처럼 각, 그래서 우리의 개발 작업이 쉽게 동일한 코드를 많이 개발도 매우 유사하다 봄 + SpringMVC 봄, 클라우드 척하기는 리본로드 밸런싱에 Hystrⅸ 서비스 퓨즈가 간소화되고, 또한, 그 기준에 캡슐화 된 간소화 된뿐만 아니라 선언적 웹 서비스를 제공하면서 구성이 크게 개발 작업을 단순화에 클라이언트 정의 방법. 유사한 사용 두보 사용.

둘째, 소비자들은 척하기를 사용하여 실현

라는 고객 서비스 만들기 1. (springcloud 서비스 - 체하다)

2, 추가 종속성

    < 의존성 > 
      < 의 groupId > org.springframework.cloud </ 의 groupId > 
      < artifactId를 > 스프링 클라우드 스타터 넷플릭스 유레카 클라이언트 </ artifactId를 > 
    </ 의존성 > 
    < 의존성 > 
      < 의 groupId > org.springframework.cloud </ 의 groupId > 
      < artifactId를 > 스프링 클라우드 스타터 openfeign </ artifactId를 > 
    </ 의존성 >

3, 시작 클래스에 주석을 추가

@EnableFeignClients

4, 문 서비스

    의 HelloService 서비스 이름 다음 바인딩 서비스를 지정하는 @FeignClient 주석을 통해 정의 된 인터페이스 다음 다음과 같이 서비스 제공자의 인터페이스를 결합하기 위해 스프링 MVC에서 제공하는 노트 :

//이 원격의 주석 이름 결합 꾀병 클라이언트를 이용해, 이름은 대문자와 소문자 수 
@FeignClient를 (값 = "springcloud 서비스 제공자" )
 공중  인터페이스 의 HelloService {
     //는 원격 메소드를 선언 서비스 제공 방법을 제공 
    RequestMapping @을 ( "/ 제공 /여보세요" )
     공공 문자열 안녕하세요 ();   
}

5, 컨트롤러를 사용하여 서비스를 호출하는 코드는 다음입니다

    @Autowired
     개인 의 HelloService의 HelloService;

    @ RequestMapping ( "/ 헬로" )
     공공 문자열 안녕하세요 () {
         // 원격 서비스에 대한 선언적 인터페이스 메소드 구현을 호출 전화 
        수익을 helloService.hello ();
    }

다음 6 application.yml 구성된

봄:
  신청:
    이름 : springcloud -service- 체하다
섬기는 사람:
  포트 : 9091
유레카:
  고객:
    서비스 - URL :
      defaultzone : HTTP : // localhost를 : 8700 / 유레카 
    # 클라이언트 갱신 시간 서비스 정보 서비스 유레카에서 30 초마다
    레지스트리 -fetch 간격 - 초 : 30
    # 나는 서비스 유레카에 등록해야합니다
    등록 가진 - - 유레카을 : 사실
    서비스를 검색 할 수 # 필요
    가져 -registry : 사실
  # 하트 비트 감지 및 갱신 시간
  예:
    # 나는 내 잘못을 대신하여, 당신에게 마음을주지 않은 경우 10 초, 서버에게, 나는, 기본 90 년대를 걸러합니다
    제외 된 이상, 초, 대기에 마지막 하트 비트를받은 후 시간 제한 #Eureka 서버 (클라이언트는 자신이 규칙에 따라 대기에 서버를 알려줍니다)
    임대 -expiration-기간을-에-초 : 10
    # 2 초는 아직 살아, 기본 30 대를 스스로 증명, 하트 비트 서버에 모든 시간을 보낼 수
    클라이언트가 초 서버 하트 비트 간격에 보내는 #Eureka 시간 (클라이언트는이 규칙을 따르는 것입니다 서버를 알려줍니다)
    임대 -renewal 간격을-에-초 : 2

7, 테스트를 시작 주소 HTTP 방문 : // localhost를 : 9091 / 체하다 / 안녕을

셋째, 사용 척하기 지원 기능

로드 밸런싱 :

    봄 클라우드는 직접로드 밸런싱하는 @FeignClient 주석의 정의를 달성 할 수있는 척하기를 사용하여,로드 밸런싱이 사용 Ribbo 개체가, RestTemplate은 이미 봄 클라우드 구성을로드 밸런싱을했다 할 수있는 RestTemplate에 직접 주입 달성하기 위해 리본을 제공합니다 인터페이스는 다음 또한 균형 잡힌 구성을 담당하는 방식에 원격 REST 서비스를 매핑하는 주석을 @RequestMappin 사용합니다.

서비스 융합 :

1 파일 hystrix 기능 application.yml를 열고

# hystrix 퓨즈 메커니즘을 사용
가장하다 :
  hystrix :
    활성화 : 사실

2 콜백 지정된 퓨즈 로직

@FeignClient (값 = "springcloud 서비스 제공자"대체 = MyFallback. 등급 )
@Component
 공공  클래스 MyFallback의 구현에 의 HelloService {
    @보수
    공공 문자열 안녕하세요 () {
         반환 "원격 서비스는 ..... 로컬 논리가 일시적으로 대신 고용 사용할 수 없습니다" ;
    }
}

3, 테스트, 수 있도록 서비스 제공 업체들은 라인에 시간 초과

당신이 공급자에 의해 throw 예외를 포착해야하는 경우 사용할 수 있습니다 :

@FeignClient (값 = "springcloud 서비스 제공자"fallbackFactory = MyFallbackFactory. 등급 )
@Component
 공공의  클래스 MyFallbackFactory 구현 FallbackFactory <의 HelloService> {
    @보수
    공공 의 HelloService 생성 (Throwable를 throw 가능 객체) {

        반환  새로운 () {의 HelloService를
            @보수
            공공 문자열 안녕하세요 () {
                 반환 에 Throwable.getMessage ();
            }
        };
    }
}

 

자세한 참조 사례 출처 : https://gitee.com/coding-farmer/spirngcloud-learn

추천

출처www.cnblogs.com/coding-farmer/p/12034706.html