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 가동
- 정상적으로 server start 되면 브라우저에서 http://localhost:8761 접속
- 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