빗썸 테크 아카데미/TIL

8일차

민철킹 2021. 8. 30. 14:54

RabbitMQ

RabbitMQ는 오픈 소스 메시지 브로커로써 Kafka에 비해 가볍고 온프레미스 및 클라우드에 배포하기 쉬운 장점이 존재한다고 한다. 

 

기본적으로 설치와 환경변수 설정을 완료하고 rabbitmq_management 플러그인을 설치한다.

 

그 후, localhost:15672로 접속해 기본 계정은 guest/guest로 로그인하면 아래와 같은 화면이 나온다.

 

MQ, 메시지 큐란 무엇일까?

메시지 큐란 키보드나 마우스를 통해 발생하는 사용자의 입력을 메시지로 전달하는 윈도우즈 시스템에서 어떤 프로세스에 대한 메시지를 저장하기 위해 할당된 큐이다. 메시지 큐에서 해당 입력에 대응하는 메시지를 읽어서 처리한다.

 

DB를 두지않고 중간에 broker를 구현하여 메시지를 처리하는 방식으로 동작한다.

 

여기서 pulisher와 subscriber의 개념을 이해하여야한다.

발행-구독 패턴은 비동기 메시징 패러다임이다. 발행-구독 모델에서 발신자의 메시지는 특별한 수신자가 정해져 있지 않다. 대신 발행된 메시지는 정해진 범주에 따라, 각 범주에 대한 구독을 신청한 수신자에게 전달된다. 수신자는 발행자에 대한 지식이 없어도 원하는 메시지만을 수신할 수 있다. 이러한 발행자와 구독자의 디커플링은 더 다이나믹한 네트워크 토폴로지와 높은 확장성을 허용한다.

발행-구독은 메시지 큐 패러다임과 형제같은 관계로, 일반적으로 대형 메시지 지향 미들웨어 솔루션의 일부이다. 대부분의 메시징 시스템의 API(예: JMS)들은 발행-구독과 메시지 큐 모델을 모두 지원한다.

옵저버 패턴과 비교

즉, publisher와 subscriber는 서로를 몰라도되고 MQ나 broker를 통해 소통하는 구조로 이해하면 된다.

producer가 메시지를 생성하여 발송한다.

 

메시지는 Queue에 저장되는데 Producer는 Queue에 바로 접근해 저장하는 것이 아닌 Exchange를 통해 접근한다.

 

Consumer는 메시지를 수신하는 주체로써 Queue에 직접 접근해 메시지를 가져온다.

 

Exchange는 Producer에게 받은 메시지를 어느 Queue로 전송할지 결정하는 객체이다. 일종의 라우터 개념이라고 생각하자.

 

여기서 Binding이란 메시지를 Queue에게 라우팅할 규칙을 지정하는 것을 말하는데

  • Direct : Routing Key가 일치하는 Queue에게 전송
  • Topic : Routing Key 패턴이 일치하는 Queue에게 전송
  • Headers : header값(key-value)를 기준으로 일치하는 Queue에게 전송
  • Fanout : 해당 Exchange로 등록된 모든 Queue에게 전송
반응형

'빗썸 테크 아카데미 > TIL' 카테고리의 다른 글

9일차  (0) 2021.08.31
7일차  (0) 2021.08.29
6일차  (0) 2021.08.27
5일차  (0) 2021.08.25
4일차  (0) 2021.08.24