우리네 장
[ MSA ] Config 서버에 Spring Cloud Bus 합해보기! 본문
Spring Cloud Config 를 사용하면서, 액추에이터를 같이 쓰면, 설정 정보를 사용하는 서비스를 재기동하지 않아도 되지만, 서비스마다 /actuator/refresh를 호출해야 하는 번거로움이 있었습니다.
매 서비스마다 호출이 아닌, 한 번의 호출로 변경된 설정정보를 가져오는 방법을 알아보도록 하겠습니다.
Spring Cloud Bus는 RabbitMQ / Kafka 같은 메세지 브로커와 함께 사용합니다.
실제 버스의 역할은 메시지 브로커처럼, 구독자에게 데이터를 전달하는 역할 보다는, 메세지 브로커에게 RefreshRemoteApplicationEvent를 broadcast 하게 publish 해주는 역할을 수행한다고 보면 됩니다.
( 이름이 버스라서 처음에 역할이 많이 혼돈스러웠습니다 😱 )
이제 설정 과정을 알아보도록 하겠습니다.
RabbitMQ 설치
RabbitMQ를 설치하기 위해서는 erlang 이라는 언어가 먼저 설치되어 있어야 합니다.
저는 해당 과정이 번거로워 도커 데스크탑을 통해 RabbitMQ 이미지를 받아 실행하도록 하겠습니다.
처음에 단순히 이미지만 다운받아 컨테이너 실행 후, 관리자 페이지에 접속 시, ERR_EMPTY_RESPONSE가 내려옵니다.
RebbitMQ 관련 플러그인을 실행해주어야 한다고 하네요!
- docker exec [ container id ] rabbitmq-plugins enable rabbitmq_management
시스템에서 사용하는 rabbitMQ의 기본 포트는 5672이며, 웹으로 접속하는 관리자 페이지는 15672로 접근할 수 있습니다.
관리자 페이지 접속 시, 기본 계정 정보는 guest / guest 입니다.
dependency 추가
저는 RabbitMQ를 사용하므로 spring-cloud-starter-bus-amqp 를 추가해줍니다.
설정정보 수정
rabbitMQ에 클라이언트로 접속하기 위해, rabbitMQ 설정정보와,
bus를 사용하기 위해서 actuator에 busrefresh를 추가하였습니다.
이러면 설정은 끝입니다! 간단하죠??
이제 rabbitMQ와 연결된 노드 서비스들 중 어느 곳을 대상으로 POST /actuator/busrefresh를 호출하면, Config 서버로부터 변경된 설정 정보를 fetch 해올 수 있습니다.
'MSA' 카테고리의 다른 글
[MSA] Config 서버에 actuator 적용하기 - no빌드, no재기동! (0) | 2024.01.10 |
---|---|
[ MSA ] Spring Cloud Config 소개 (0) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway에 커스텀 필터 적용하기 (1) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway와 Discovery Server 같이 사용하기 (0) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway 소개 (0) | 2023.03.08 |