RabbitMQ를 사용할 때 참고하기 위해 작성한 글
Abstract
RabbitMQ는 AMQP 스펙을 따르는 Message Broker이다.
AMQP를 기반으로 구현됐지만 MQTT, STMOP, XMPP 등의 다양한 프로토콜을 사용할 수 있지만 AMPQ기반으로 사용하기 위한 RabbitMQ에 대해 알아보자
RabbitMQ 특징
RabbitMQ는 얼랭으로 작성됐으며 AMQP 스펙을 구현한 Message Broker이다.
RabbitMQ는 얼랭으로 작성됐으며 이에 따라 다음과 같은 특징이 있다.
1. RabbitMQ의 클러스터는 서로 다른 서버 간의 얼랭의 IPC 시스템을 사용해 통신한다.
2. RabbitMQ는 얼랭 IPC를 사용해 메시지, 상태, 설정을 공유하고 각 서버를 동기화한다.
3. 얼랭 IPC 시스템은 TCP/IP를 사용해서 RabbitMQ 서버 통신을 처리한다.
RabbitMQ는 AMQP 스펙을 구현했으며 이에 따라 다음과 같은 특징을 가진다.
1. 유연한 메시지 라우팅
2. 메시지 내구성 설정
3. 데이터 센터 간 통신
4. 벤더 중립적, 플랫폼에 독립적
AMQP란?
Advanced Message Queueing Protocol의 줄임말이다. 즉 메시지를 주고받기 위한 통신규약이다. AMQP는 Exchange, Qeueue, Binding을 구성요소로 가지며 각각이 무엇인지 알아보자
Exchange
Exchange는 메시지 브로커에서 큐에 메시지를 전달한다.
즉, RabbitMQ에 어떤 메시지를 보내면 Exchange가 메시지를 수신하고 메시지를 보낼 위치를 결정한다.
Exchange는 메시지를 보낼 때 어떤 방식으로 메시지를 전달할지 결정할 수 있으며 이를 `Exchange Rouing`이라 부른다. 이러한 방식(Exchange Type)에는 Direct, FanOut, Topic, Header 가 존재한다.
Queue
Exchange으로부터 받은 메시지를 저장하는 역할이다. "저장"되는 공간은 "디스크" 혹은 "메모리"로 선택할 수 있다.
Binding
Binding은 Exchange와 Queue의 관계를 정의하는 것을 말한다. Exchange가 Queue로 메시지를 전달하기 위해서는 Binding Key라는 것을 사용한다.
RabbitMQ의 설정을 보게되면 Binding Key보다는 Routing Key라는 것이 Exchange 항목에 보인다. Rounting Key는 Exchange에 메시지를 발행할 때 사용하며 Rounting Key는 큐의 이름이거나 의미적으로 메시지를 설명하는 문자열일 수 있다.
RabbitMQ에서는 Exchange와 Queue에서 Binding을 설정할 수 있다.
RabbitMQ Setting
RabbitMQ를 다루기 위해 RabbitMQ를 Setting해보자. 직접 설치하는 방법도 있겠지만 docker-compose를 이용했다.
# docker-compose.yml 1 ↵
version: "3"
services:
rabbitmq:
image: rabbitmq:management
ports:
- 5672:5672
- 15672:15672
15672 port는 RabbitMQ의 Web Interface를 나타낸다. 즉 http://127.0.0.1:15672에 접속하면 다음과 같은 화면을 볼 수 있다.
username이나 password에 관련한 설정을 하지 않았다면 기본 접속 계정은 username과 password 모두 guest이다
'Server > RabbitMQ' 카테고리의 다른 글
3. Delivery Guarantee - Mandatory (1) | 2023.10.07 |
---|---|
2. Rabbitpy를 이용해 RabbitMQ 다루기 (0) | 2023.09.20 |