Self-Study/기타

[RabbitMQ] rabbitmq의 기본 개념

Raadian 2022. 7. 5. 08:18

References

https://www.rabbitmq.com/getstarted.html

https://blog.dudaji.com/general/2020/05/25/rabbitmq.html

https://jonnung.dev/rabbitmq/2019/02/06/about-amqp-implementtation-of-rabbitmq/

https://ko.wikipedia.org/wiki/AMQP

 

정의

RabbitMQ는 **AMQP(Advanced Message Queuing Protocol)**를 따르는 오픈소스 메세지 브로커이다.

메세지를 많은 사용자에게 전달하거나, 요청 처리 시간이 길 때 해당 요청을 다른 API에게 위임하여 재빠른 응답을 하는 것이 주 기능으로 어플리케이션 간 결합도를 낮추는 장점이 있다.

※ ASMP(Advanced Message Queing Protocol)

MOM(Message Oriented Middleware)을 위한 프로토콜을 의미한다.

메시지 지향, 큐잉, 라우팅, 신뢰성, 보안 기능이 있다.

 

구성

RabbitMQ의 구성은 Producer, Consumer, Queue, Exchange, Binding으로 내용은 다음과 같다.

Producer

메세지를 생성하고 발송하는 주체다.

메세지가 Queue에 저장이 되는데 이때, 직접 접근하는 것이 아닌 Exchange를 통해 접근하는 것이 특징이다.

Exchange

Producer들에게서 전달받은 메세지들을 어떤 Queue 그룹에게 발송할지 결정하는 객체다.

Exchange의 일종의 라우터 개념으로 다음과 같은 타입들이 있다.

타입  설명  특징
Direct Routing key가 정확히 일치하는 Queue에게 메시지를 전송 Unicast
Topic Routing key의 패턴이 일치하는 Queue에게 메시지를 전송 Multicast
Headers key : value로 이루어진 header값을 기준으로 일치하는 Queue에게 메시지를 전송 Multicast
Fanout 해당 Exchange에 등록된 모든 Queue에게 메시지를 전송 Broadcast

Binding

Exchange에게 메세지를 라우팅 할 규칙을 지정하는 행위이다.

특정 조건에 맞는 메세지를 큐에 전송하도록 설정할 수 있는데 Exchange의 타입에 맞게 설정해야한다.

Queue

Producer들이 발송한 메시지들이 Consumer가 소비하기 전까지 보관하는 장소다.

Queue가 생성될 때 같은 이름과 설정으로 두면 기존 것과 연결을 시켜 정상적으로 운용할 수 있지만 이때, 같은 이름임에도 다른 설정으로 두면 에러가 발생할 수 있으니 유의한다.

Consumer

메세지를 수신하는 주체다.

Queue에 직접 접근하여 메세지를 가져온다.