Spring/Spring Cloud
Spring Cloud DiscoveryClient
개복이
2022. 8. 13. 17:15
Spring Cloud DiscoveryClient 등록하고 사용
[build.gradle]
- Dependencies
- Spring Cloud Discovery > Eureka Discovery Client 추가
plugins {
id 'org.springframework.boot' version '2.7.1'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.lee.userservice'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', '2021.0.3')
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test'){
useJUitPlatform()
}
[application.yml]
- eureka 서버에 등록하기 위해서 register-with-eureka 속성을 true로 설정
- eureka 서버로부터 인스턴스들의 정보를 주기적으로 가져오기 위해서 fetch-registry 속성을 true로 설정
server:
port: 9001
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
## 추가 ##
- server.port를 0으로 지정하여 랜덤하게 할당
- instance id를 랜덤하게 할당
server:
port: 0
spring:
application:
name: user-service
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
## 추가 ##
- Spring boot 내에 instance 여러 개 등록하여 확인
- 터미널이나 iTerm 등에서 해당 프로젝트로 이동 후 실행
[UserServiceApplication.java]
- eureka 서버에 인스턴스로 등록하기 위하여 @EnableDiscoveryClient 선언
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
[Eureka 서버 및 인스턴스로 등록한 서버 기동 후 확인]
- application.yml에 기술한 spring.application.name으로 등록
- UP 상태이므로 현재 작동중이며 Availability Zones에 한 개가 등록되있음을 확인