1 분 소요

이번에는 gateway-serviceconfig-service를 연동해보자.
이전 글에서 user-serviceconfig-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를 사용할 것이다.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기