본문 바로가기
Programming/Java, Spring

[Spring Cloud] bus, rabbitmq를 이용해 서버 연결하고 actuator를 이용한 갱신 집합화하기

by Renechoi 2023. 6. 1.

설정 정보를 변경하는 방식으로 Spring cloud bus를 사용한다. 

 

Atuator의 refresh 방법은 서버가 늘어나면 하나하나를 전부 해줘야 해서 번거롭다. 

 

Spring cloud bus 는 

- 분산 시스템의 노드(마이크로 서비스)를 경량 메시지 브로커와 연결한다

- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달한다 (broadcast) 

 

다이렉트로 메시지를 전달하는 것이 아니라 중간에 middleware를 두고 전달하는 방식이다. 

 

AMQP (Advanced Message Queing Protocol) 을 이용해서 변경점을 알려준다. 

 

=> push update 

 

 

AMQP : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜

- 메시지 지향, 큐잉 라우팅, 신뢰성, 보안

- Erlang, RabbitMQ에서 사용 

 

kafka 프로젝트

- Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트

- 분산형 스트리밍 플랫폼

- 대용량 데이터 처리 가능한 메시지 시스템 

 

 

 

스프링 클라우드 버스가 작동되는 방식

 

클라우드 서버에 대해 Http Post -> Busrefresh 

이때 어디에 호출하는 것은 상관 없고, 버스에 연결된 어디에든 해도 된다. 

 

 

 


먼저 dependency를 설정해준다.

 

config 서버 : 

implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

 

 

user, gateway server: 

 

implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'

 

 

 

yml 파일에 다음과 같은 설정을 추가해준다.

이럼으로써 각각의 서버들이 노드로서 연결이 되는 그림이 된다. 

 

  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, httptrace, busrefresh

 

 

이로써

 

/actuator/busrefresh를 post 방식으로 전달하면 하나만 업데이트 해도 연결된 노드들 역시 업데이트 된다. 

 

 

 

 


ref. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

반응형