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에 한 개가 등록되있음을 확인

## 추가 ##