개발지식

RabbitMQ란?!

우루쾅 2024. 3. 11. 20:49
728x90
반응형
SMALL

RabbitMQ란

RabbitMQ는 오픈 소스 메시지 브로커 소프트웨어로, 복잡한 데이터 흐름과 메시지 관리를 단순화하여 개발자가 애플리케이션 간에 데이터를 쉽게 전송할 수 있게 해줍니다. 메시지 큐의 한 종류로, 분산된 애플리케이션 간의 메시지 전달 및 통신을 용이하게 해주는 오픈 소스 메시지 브로커이며, 메시지 큐는 시스템 간의 비동기적인 통신을 지원하고, 장애 발생 시 메시지를 안전하게 보관하여 손실 없이 처리할 수 있게 해줍니다.

 

MSA 구조의 서버를 사용하다 보면, 서버와 서버끼리 메시지를 주고받아야할 때가 있는데 이 때 RabbitMQ를 사용합니다.

서버1이 서버2에게 메시지를 보낼 때 rabbitMQ를 통해 메시지를 전송합니다. 이 때 서버1이 producer가 되는 것이고, 서버2가 consumer가 되는 것입니다.

반대로 서버2가 서버1에게 메시지를 보낼 때 서버2가 producer가 되고 서버1이 consumer가 됩니다.

 

 

중요 개념

 

Producer : 요청을 보내는 주체, 보내고자 하는 메시지를 exchange에 publish 합니다.

Consumer : producer로부터 메시지를 받아 처리하는 주체입니다.

Exchange : producer로부터 전달받은 메시지를 어떤 queue로 보낼지 결정하는 장소로, 4가지 타입이 있습니다.

Queue : consumer가 메시지를 consume하기 전까지 보관하는 장소입니다.

Binding : Exchagne와 Queue의 관계, 보통 사용자가 특정 exchange가 특정 queue를 binding하도록 정의합니다.

 

Exchange 의 4가지 타입

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

 

* Headers 타임의 경우, 모든 header가 일치할 때, 하나라도 일치할 때 메시지 전송 등의 옵션을 줄 수 있습니다.

 

RabbitMQ의 주요 특징

다양한 메시징 패턴 지원

RabbitMQ는 point-to-point, publish/subscribe, request/reply 등 다양한 메시징 패턴을 지원합니다. 이를 통해 개발자는 애플리케이션의 요구 사항에 맞는 최적의 메시징 구조를 설계할 수 있습니다.


높은 확장성과 유연성

RabbitMQ 서버는 클러스터 구성이 가능하여, 메시지 처리량이 증가해도 시스템을 수월하게 확장할 수 있습니다. 또한, 다양한 플러그인을 통해 추가 기능을 쉽게 통합할 수 있습니다.


메시지 큐잉(Queuing)

RabbitMQ는 메시지를 큐에 저장하고, 수신자가 처리할 준비가 될 때까지 보관합니다. 이를 통해 피크 타임에 발생하는 부하를 분산시키고, 시스템의 안정성을 보장합니다.


메시지 브로커의 역할

RabbitMQ는 메시지의 발행자와 소비자 사이에서 중재자 역할을 합니다. 메시지를 적절한 큐로 라우팅하고, 처리 상태를 관리하여, 메시지가 정확한 대상에게 전달되도록 합니다.

 

 

 

 

출처

진진이랑 - https://jin2rang.tistory.com/entry/RabbitMQ%EB%9E%80

somaz의 IT 공부일지 - https://somaz.tistory.com/119

dongbin_Shin - https://velog.io/@sdb016/RabbitMQ-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90

728x90
반응형
LIST

'개발지식' 카테고리의 다른 글

Access Token이란?!  (2) 2024.03.13
롬복(Lombok)이란?!  (2) 2024.03.12
프라이빗 VS 퍼블릭 클라우드  (2) 2024.03.10
JWT 란?!  (2) 2024.03.09
OCI 란 무엇인가?!  (4) 2024.03.07