Config 값 변경했을때 알아오는 방법
- 서버 재기동 (크게 의미 없음. 사용 X)
- Actuator refresh
- Spring cloud bus
Spring Cloud Bus
- 분산 시스템의 노드(MicroService)를 경량 메시지브로커(RabbitMQ)와 연결
- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)
Config Client 또는 Spring Cloud Config Server가 HTTP POST /busrefresh를 실행하게 되면 Sping Cloud Bus에게 알리고 연결된 Config Client 들도 함께 업데이트 처리한다.
메시지 큐잉 : 마이크로서비스들 중간에 요청사항을 가지고 있는 메시징 서버(미들웨어)를 놓아둔 형태
AMQP를 이용해서 변경사항을 일괄적으로 각 Config Client에게 전달
메시지 브로커
AMQP
- Advanced Message Queuing Protocol 이라고 하여, 메시지 지향 미들웨어를 위한 개방형 표준 응용 프로토콜
- 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안
- Erlang, RabbitMQ 에서 사용
Kafka
- Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
- 분산형 스트리밍 플랫폼
- 대용량 데이터를 처리 가능한 메시징 시스템
RabbitMQ 설치 - Mac
- brew update
- brew install rabbitmq
$ brew update
$ brew install rabbitmq
rabbitmq를 서비스로 등록 - brew services start rabbitmq
개별적으로 실행 - rabbitmq-server
실행
$ export PATH=$PATH:/usr/local/sbin # 설치 위치 환경변수 설정
$ rabbitmq-server
http://localhost:15672 로 접속하면 다음과 같이 로그인 페이지가 나오고 username 과 password 에 guest 를 입력하여 로그인 할 수 있다.
기본 계정
- Username : guest
- password : guest
프로젝트 수정
Dependencies
Config Server
- spring-boot-starter-actuator
- spring-cloud-starter-bus-amqp
Users Micorserivce, Gateway Service
- spring-cloud-starter-bus-amqp
application.yml
Config Server, Users Micorserivce, Gateway Service
spring:
rabbitmq:
host: 127.0.0.1
port: 5672 # 웹 브라우저에서 접속할때는 15672, amqp 프로토콜 사용시에는 5672
username: guest
password: guest
Config Server
# (rabbitmq) config server에 변경 요청 사항이 들어오게 되면 rabbitMQ에 통보한 후 rabbitMQ에 등록된 정보보고 push
management:
endpoints:
web:
exposure:
include: health, busrefresh
나머지도 busrefresh 추가
테스트
- Start RabbitMQ Server
- Start Spring Cloud Config Service
- Start Eureka Discovery Service
- Start Spring Cloud Gateway Service
- Start Users Mircroservice
config 변경 후 -> http://127.0.0.1:8000/user-service/actuator/busrefresh -> 204 no content
apigateway, userservice 한 곳에서만 호출해도 모두 정상적으로 적용된다.
'Spring > [인프런] Spring Cloud' 카테고리의 다른 글
Microservice간 통신 (0) | 2022.06.28 |
---|---|
설정 정보의 암호화 처리(Encryption, Decryption) (0) | 2022.06.27 |
Configuration Service (0) | 2022.06.24 |
Users Microsservice - Login (0) | 2022.06.20 |
Catalogs, Orders Microservice (0) | 2022.06.19 |