MSA

[MSA] Spring Boot - Spirng Cloude Bus (RabbitMQ)

차노도리 2023. 4. 13. 21:12

Spring Cloude Bus

  • 분산 시스템에서 구성 변경 사항을 전파하는 라이브러리
  • 구성 변경 사항이 발생하면, 해당 변경 사항을 구독한 모든 인스턴스에 대해 자동으로 전파되어 구성 변경을 쉽게 처리할 수 있다.

AMQP (Advanced Message Queuing Protocol)

  • 메세지 지향 미들웨어를 위한 개방형 표준 으용 계층 프로토콜

Kafka

  • 분산형 스트리밍 플랫폼
  • 대용량의 데이터를 처리 가능한 메시징 시스템
  • 초당 100k+ 이상의 이벤트 처리
  • pub/sub, Topic에 메시지 전달
  • Ack를 기다리지 않고 전달 가능
  • 생산자 중심

RabbitMQ

  • 초당 20+ 메시지를 소비자에게 전달
  • 메시지 전달 보장, 시스템 간 메시지 전달
  • 브로커, 소비자 중심

RabbitMQ 설치 (MAC)

brew update

brew install rabbitmq

RabbitMQ 

  • export PATH:/usr/local/sbin (환경변수 설정)
  • rabbitmq-server (서버 실행)
  • brew services start rabbitmq (서버 항상 실행)
  • 127.0.0.1:15672 (확인 가능) (시스템에선 : 5672)
    • defulat id : guest
    • defualt pw : guest

의존성 주입 (build.gradle)

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

 

application.yml

  • /actuator/busrefresh (post) 호출시 연결되어있는 모든 서비스 호출
...

spring:
  application:
    name: gugbab-config-server
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    stream:
      username: guest
      password: guest
  ...
  
management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, httptrace, busrefresh