Registry 연결(Eureka Client)

    • Eureka Server와 연결하기 위한 Eureka Client




    • https://start.spring.io/ 에서 Eureka Client 프로젝트 템플릿 생성
    • Project 및 Metadata 정보를 작성
    • Dependencies 입력란에 eureka client 입력 후 추가
    • Generate Project 클릭
    • 다운로드 받은 압축 파일을 IntelliJ로 오픈




    • 다운 받은 폴더 선택




    • Gradle 설정 "Use default gradle wrapper (recommended)" 선택




    • 프로젝트 gradle 설정 파일인 build.gradle 파일을 확인
    • @RestController 사용을 위해 spring-boot-starter-web dependencies 추가
      compile('org.springframework.boot:spring-boot-starter-web')




    • DiscoveryClient 설정을 위해서 SpringCloudEurekaClientApplication 파일에 @EnableDiscoveryClient 어노테이션 등록
    • 테스트를 위한 ServiceInstanceRestController class 등록
      • @RestController
        class ServiceInstanceRestController {

        @Autowired
        private DiscoveryClient discoveryClient;

        @RequestMapping("/service-instances/{applicationName}")
        public List<ServiceInstance> serviceInstancesByApplicationName(
        @PathVariable String applicationName) {
        return this.discoveryClient.getInstances(applicationName);
        }
        }




    • Eureka Client 정보 설정
      • Spring boot 설정 로드시 application.properties 보다 우선순위가 높은 bootstrap.properties 파일 생성
      • /project명/src/main/resources/ 하위에 bootstrap.properties 파일 생성
      • Eureka Client 정보 설정
        • server.port=8080 // 기본 8080 port 사용이지만 client 구분위해 명시
          spring.application.name=libqa-client




  • Service Discovery Test




      • Eureka Server에 현재 등록된 instance가 없음 확인


    • Eureka client 가동
    • 정상적으로 server start 되면 브라우저에서 http://localhost:8761 새로고침
    • Eureka client server의 bootstrap.properties 파일 정보(spring.application.name=libqa-client) 확인 가능




    • Eureka client2 가동
      • Eureka client project를 복사하여 spring-cloud-eureka-client2 으로 폴더명 변경
      • 이전과 동일하게 IntelliJ로 project 오픈
      • 각 client 구분을 위해 bootstrap.properties 의 port 및 application.name 정보 변경



    • Eureka Server Page 확인
      • 정상적으로 server start 되면 브라우저에서 http://localhost:8761 접속
      • 각 Eureka Client 설정된 정보 확인




    • Eureka Client ServiceInstanceRestController 호출 테스트
    • 각 Client는 Service Discovery에 등록된 client 정보를 조회해서 return
      • @RestController
        class ServiceInstanceRestController {

        @Autowired
        private DiscoveryClient discoveryClient;

        @RequestMapping("/service-instances/{applicationName}")
        public List<ServiceInstance> serviceInstancesByApplicationName(
        @PathVariable String applicationName) {
        return this.discoveryClient.getInstances(applicationName);
        }
        }


    • 브라우저 상에 applicationName으로 DiscoveryClient 조회
      • http://localhost:8080/service-instances/libqa-client




      • http://localhost:8080/service-instances/howling-client




      • http://localhost:8081/service-instances/libqa-client




      • http://localhost:8081/service-instances/howling-client



    • 다른 Client 서버 호출해도 @RequestMapping("/service-instances/{applicationName}") Eureka server에 등록된 applicationName의 정보 조회 가능  



sample repository : https://github.com/yongpwi/spring-cloud-eureka-client

                             https://github.com/yongpwi/spring-cloud-eureka-client2