-
Spring Cloud MSA - 2 | 마이크로서비스 Config Client 구축하기▼ Backend/└ MSA, Spring Cloud 2021. 11. 12. 16:57반응형
▶ Spring Cloud Config Client
Config-Server를 Fetching 하여 환경 구성 데이터를 읽어오는 Config-Client를 설정해본다.
고유 목적의 마이크로 서비스는 동일한 Config-Server를 설정함으로써 공통적인 환경을 가져오거나 애플리케이션에 맞게 가져올 수 있다. 그리고 actuator의 refresh를 통해 변경된 설정 값도 서버의 재시작 없이 적용이 가능하다.
build.gradle
plugins { id 'org.springframework.boot' version '2.5.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.venh.msa' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { mavenCentral() } ext { set('springCloudVersion', "2020.0.4") } dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.cloud:spring-cloud-starter-config' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter' testImplementation 'org.springframework.boot:spring-boot-starter-test' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } test { useJUnitPlatform() }
application.yml
Config-Server의 URL인 http://localhost:8888를 import 하고 application-name-profile-active.yml(venh-dev.yml)을 읽어온다.
*Config-Server는 당연히 실행 중이어야 한다.
actuator 사용을 위한 설정을 해준다.
여러 기능이 있지만 여기서는 config를 재요청하는 refresh만 설정한다.server: port: 8080 spring: application: name: venh profiles: active: dev config: import: optional:configserver:http://localhost:8888 #actuator config management: endpoints: web: exposure: include: refresh
컨트롤러(Controller)
venh-dev.yml의 venh.test 값을 @Value 어노테이션을 통해 가져온다.
@RefreshScope는 설정이 변경될 경우 해당 어노테이션이 설정된 Bean에 대해 Config-Server의 변경정보를 참조하여 Bean을 다시 리로드 할 수 있게 해 준다.package com.venh.msa.web; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class ConfigController { @Value("${venh.test}") private String str; @GetMapping("/test") public String test() { return str; } }
테스트 (Postman 사용) - 포스트맨(Postman) 설치 및 사용법
1) Config-Server 실행
2) Config-Client 실행
콘솔 로그를 살펴보면 Config Server가 Fetching 된 걸 확인할 수 있다.http://localhost:8080/test를 호출한다.
venh.test 데이터가 정상적으로 출력되는지 확인한다.git에서 venh.test 값을 변경한 뒤, 서버를 재시작하지 않고 POST 요청으로
http://localhost:8080/actuator/refresh를 요청하면 Bean를 리로드 한다.다시 http://localhost:8080/test를 호출한다.
변경된 venh.test 값을 확인한다.GitHub
https://github.com/conf312/venh-msa
Spring Cloud MSA - 1 | Config-Server 구축하기
Spring Cloud MSA - 2 | Config-Client 구축하기
Spring Cloud MSA - 3 | Eureka를 이용한 서비스 관리 - 1 (Eureka Server 만들기)
반응형'▼ Backend > └ MSA, Spring Cloud' 카테고리의 다른 글
Spring Cloud MSA - 6 | Spring Cloud Gateway, Load balancing 구현하기 (0) 2021.12.07 Spring Cloud MSA - 5 | Circuit Breaker, Resilience4J 구현하기 (0) 2021.12.03 Spring Cloud MSA - 4 | Eureka를 이용한 서비스 관리-2 (Eureka Client) (0) 2021.11.27 Spring Cloud MSA - 3 | Eureka를 이용한 서비스 관리-1 (Eureka Server 구축) (0) 2021.11.26 Spring Cloud MSA - 1 | Config-Server 구축하기 (0) 2021.11.12