메세지큐 RabbitMQ는 뭐냐?

inshining·2022년 12월 14일
0
post-thumbnail

RabbitMQ는 메세지 브로커의 일종이다. 아키텍처 내부에서 프로세스 간 통신을 하기 위한 방법 중 하나가 메세지 브로커가 있다. 메세지 브로커 말고도 이벤트 브로커도 있으며, 많이 알려진 Kafka는 이벤트 브로커의 한 종류이다. 그렇다면 메세지 브로커와 이벤트 브로커의 무엇이고 서로 무엇이 다를까?

메세지 브로커, 이벤트 브로커

두 브로커의 가장 큰 차이 점은 큐 안에 존재하는 메세지 혹은 이벤트를 별도로 삭제 여부이다. 메세지 브로커에서 컨슈머가 메세지를 사용하고 나면 메세지를 삭제한다. 반면, 이벤트 브로커는 특정 컨슈머가 이벤트를 사용하더라도 삭제되지 않고, 인덱스 처리되어 개별 접근이 가능하도록 보존된다. 단일한 이벤트를 저장함으로써 장애가 발생하더로도 장애 발생 이전으로 돌아가 재처리할 수 있다. 많은 양의 데이터를 실시간 처리도 가능하다. 이벤트 브로커는 메세지 브로커보다 폭 넓게 활용할 수 있기 때문에 이벤트 브로커는 메세지 브로커가 될 수 있지만, 메세지 브로커는 이벤트 브로커가 되지 못한다.

RabbitMQ의 구성요소

  • Producer : 메세지 생성하고 발송 주체 , 바로 큐에 접근하지 못하고, exchange에 전달 넘어간다.
  • Consumer: 메세지를 수신하는 주체. 큐에 직접 접근하여 메세지 가져옴
  • Queue: 컨슈머들이 소비하기 전까지 보관하는 장소. 이름으로 구분. 같은 이름 다른 설정이면 에러남
  • Excahge: 프로듀서에게 받은 메세지를 어떤 큐에 발송하지 정하는 일종의 라우터 객체.
  • Binding: 메세지를 라우팅할 규칙 지정할 행위. 특정 조건에 따라 특정 큐에 전송될 수 있어야함.

Exchange의 네 가지 타입

  • Direct : Routing Key 일치하는 큐에 전송
  • Topic: Routing key pattern 일치
  • Headers: [key:value] header에 기준에 맞는 큐 전달
  • Fanout: 해당 Exchang 등록된 모든 큐에 전송

참고 자료

  1. https://youtu.be/H_DaPyUOeTo
  2. https://nesoy.github.io/articles/2019-02/RabbitMQ
  3. https://blog.dudaji.com/general/2020/05/25/rabbitmq.html
  4. https://hwannny.tistory.com/82!
profile
가능한 최선을 다하고 싶다

0개의 댓글