MessageQueue - RabbitMQ

박준수·2023년 7월 8일
0

[토이프로젝트]

목록 보기
3/5
post-thumbnail

Message Queue란?

  • 의사소통할 어플리케이션에 각각 메시지를 보넨다.
  • 메세지 큐는 일시적인 메시지 저장소를 제공한다. (목적지 프로그램이 바쁘거나 연결되지 않았을 때)
  • 메시지큐는 Producer, brocker(message Queue Software), Consumer로 구성되어 있다.
  • 메시지 큐는 어플리케이션간 비동기 소통을 제공해준다.

RabbitMQ란?

  • 메세지 큐 소프트웨어로 서로 다른 어플리케이션간 메시지를 보네고 받을 수 있다.
  • RabbitMQ는 AMQP(Advanced Message Queueing Protocal)로 국현되어있으나 현재는 RabbitMq또한 STOMP, MQTT, HTTP 같은 다양한 API 프로토콜을 지원해준다.

  • Producer은 RabbitMq 브로커를 통해 애플리케이션으로 메시지를 보내고, Consumer는 RabbitMQ 브로커를 통해 메시지를 읽는다(받는다.)
  • Queue : 메시지가 한 번 읽게 되면 , 큐에서부터 메세지는 소비되고 제거된다.
    • 메세지는 오직 한번만 전달된다.
  • Exchange : 메세지를 어떻게 라우팅 할지 정하는 일종의 알고리즘, Producer로부터 수신한 메시지를 큐에 분배하는 라우터 역할
    • Routing Key : Exchange에서 큐에 분배하는 라우터 역할을 할 때 Routing Key를 통해서 어느 큐에 메세지를 보넬지 정한다.

  • Binding : queue 와 exchage를 연결해준다.

RabbitMQ의 간단한 생명주기 정리

  1. 생산자는 교환할 메시지를 게시합니다.
  2. 메시지를 받은 후 Exchange는 메시지를 대기열로 라우팅하고 바인딩됩니다.
  3. 대기열은 메시지를 수신하고 소비자가 사용할 때까지 보관합니다.
  4. 마지막으로 소비지가 메시지를 처리합니다.

Exchange의 종류

  • Direct
    • Routing Key를 기반으로 메시지를 전달합니다.
    • exchange의 라우팅 키와 binding키는 완전히 동일해야합니다.
  • Topic
    • Routing Key 패턴 기반으로 메시지를 전달
    • * : 단어 하나 일치
    • # : 0 또는 1개 이상의 단어 일치**
  • Fanout
    • 브로드캐스트 방식
    • 모든 큐에 메시지를 전달 (라우팅 키가 제공되어도 무시됨)
  • Header
    • 라우팅 키 대신에 header에 있는 기준에 의해서 정해짐
    • 훨신 더 복잡한 기준을 구체화 할 수 있음

참고 :
RabbitMQ Exchange Types
Spring Boot RabbitMQ Tutorial - #1 - Course Overview | Free Course on YouTube

profile
방구석개발자

0개의 댓글