[E-commerce App] Spring Cloud Config - Spring Cloud Gateway 연동
이번에는 gateway-service
와 config-service
를 연동해보자.
이전 글에서 user-service
와 config-service
를 연동할 때와 비슷하다.
gateway-service
pom.xml
<!-- spring-cloud-config 설정 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
bootstrap.yml
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: ecommerce
application.yml
이전에 user-service
와 다른 점은, httptrace가 추가되었다는 점이다.
management:
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace
그리고 USER-SERVICE의 Actuator 라우터 정보도 추가해준다.
(참고로, Actuator 라우터 정보 추가는 이 전 글에서 미리 진행했다.)
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/actuator/**
- Method=GET, POST
filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}
GatewayServiceApplication.java
httptrace 기능을 사용해주기 위해 아래처럼 설정해주어야 한다.
@SpringBootApplication
public class GatewayServiceApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayServiceApplication.class, args);
}
// 🌟 httptrace 를 사용하기 위해 bean 등록
@Bean
public HttpTraceRepository httpTraceRepository() {
return new InMemoryHttpTraceRepository();
}
}
테스트
service-discovery
-> config-service
-> gateway-service
-> user-service
순으로 서버를 기동한다.
ecommerce.yml
의 파일 내용을 변경한 뒤에 add - commit 까지 진행한다.
/user-service/actuator/refresh
를 호출해 리프레시 하면 user-service
에서는 변경된 구성 정보를 사용하는데,
gateway-service
에서는 변경되기 이전의 구성 정보를 사용한다.
gateway-service
에서도 변경된 정보를 사용하기 위해서 /actuator/refresh
를 호출하면,
게이트웨이 서비스도 변경된 구성 정보를 사용한다.
http://localhost:8000/actuator/refresh
➡️gateway-service
리프레시
http://localhost:8000/user-service/actuator/refresh
➡️user-service
리프레시
하지만, 이렇게 각각 refresh 해주어야 하는 방법이 효율적인 방법은 아니다.
따라서 이후에는 🌟 Spring Cloud Bus를 사용할 것이다.
💛 개인 공부 기록용 블로그입니다. 👻