Book & Lecture/이도원님 MSA

Section 8: Cloud Bus

philo0407 2023. 5. 28. 19:41

 

설정 정보 반영하는 방법 세 가지

 

1. 서버 재기동

2. Actuator Refresh

3. Spring Cloud Bus

 

1 -> 2로 가면서 동적으로 설정 정보 변경이 가능하나 각 서비스에 대해 해줘야 한다

3은 일괄 적용 가능

 

 

Cloud Bus 개념

spring cloud bus current reference

 

클라우드 버스 자체는 애플리케이션들 사이의 상태 변화를 감지하고 이벤트를 전파해서 전체 시스템 간의 상호작용과 동기화를 하는 것을 뜻한다

 

수단은 메시지 브로커(RabbitMQ, Apache Kafka)(AMQP)를 사용해서 이벤트를 송수신한다

 

강의에서는 설정 정보를 애플리케이션들에 일괄 반영(broadcast)하기 위해 사용했다

 

Erlang, Rabbit MQ 설치

역시나... 한번에 되지 않았다

 

Rabbit 이전 버전 installer 를 못찾아서 결국은 아래 버전으로 진행했다

 

- Erlang v25.3.2- Rabbit MQ v3.11.16

 

해당 래빗의 호환되는 최소 Erlang 버전이 25인데, 그 중에서 minor 버전이 가장 높은 것을 선택했다

 

문제는 앞서 말했듯 한 번에 안됨...

 

해결법은 아래와 같다

 

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.11.16\sbin

 

위 경로로 들어가서 아래 명령을 실행

 

rabbitmq-server -detached

 

만일 안된다면 아래 명령을 cmd 관리자모드에서 실행한다

rabbitmq-service.bat remove
rabbitmq-service.bat install
rabbitmq-server -detached
rabbitmq-plugins enable rabbitmq_management

 

 

위 처럼 나오면 성공이다

 

참고

윈도우 rabbitMQ 설치했는데 15672 접속이 안됩니다.. - 인프런 | 질문 & 답변 (inflearn.com)

RabbitMQ Server - 윈도우에 설치 및 동작 시키기 : 네이버 블로그 (naver.com)

 

 

Rabbit MQ 스프링 연결

아래 정보를 추가한다

 

dependencies {
    // config client
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'

    // actuator
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    
    // AMQP for Spring Cloud Bus
    implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
}

 

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    
management.endpoints.web.exposure.include: busrefresh

 

아래로 요청을 보낸다, Rabbit MQ Bus를 호출하는 것이므로 어느 곳에서 하던 상관 없다

 

### Bus Refresh
POST http://localhost:8000/actuator/busrefresh

 

아래와 같이 나오면 성공한 것