[TIL] RabbitMQ 개념
by 달쿨RabbitMQ 란?
* AMQP를 기반으로 한 오픈 소스 메시지 브로커로, 메시지를 송신하는 애플리케이션과 수신하는 애플리케이션 간의 비동기 통신을 가능하게 한다. 또 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산 가능하다.
* AMQP(Advanced Message Queuing Protocol) 란?
메시지 지향 미들웨어를 위한 애플리케이션 계층 프로토콜
주로 메시지 브로커 시스템에서 표준화된 통신 방식을 제공하며, 메시지 기반의 데이터 송수신을 안전하고 신뢰성 있게 처리할 수 있도록 설계되어 있다. RabbitMQ는 이러한 AMQP 표준을 따르며 AMQP의 주요 개념(교환기, 큐, 바인딩 등)을 기반으로 메시지를 라우팅하고 처리한다.
주요 구성 요소
주요 구성 요소와 흐름을 간단하게 정리 해 보았다.
- Message
전달되는 데이터의 단위 - Producer 생산자
메시지를 생성하여 브로커(RabbitMQ)로 전송한다. - Exchange 교환기
프로듀서가 보낸 메시지를 적절한 큐로 라우팅한다. 타입에 따라 라우팅 방식이 달라진다. - Queue 큐
메시지를 저장하는 공간. 메시지가 처리 될 때까지 대기하며 선입선출 방식으로 메시지를 처리한다. - Consumer 소비자
큐에서 메시지를 받아 처리한다. - Binding 바인딩
Exchange와 Queue를 연결하는 설정. 바인딩 키를 통해 메시지를 큐로 전달하는 조건 설정이 가능하다.
즉 프로듀서가 메시지를 생성하면 Exchange로 보내지고 메시지가 적절한 큐로 라우팅 되며 큐에 대기중인 메시지를 소비자가 받아 애플리케이션에 맞게 처리한다.
장단점
장점
장점으로는 메시지를 디스크에 저장해 문제 발생 시에도 메시지가 손실되지 않는다는 신뢰성을 보장한다는 점과 클러스터링을 통해 작업 부하를 효율적으로 분산할 수 있다는 점이 있다. 무엇보다 송신과 수신의 독립적인 처리가 가능해 비동기 처리가 필요한 환경에서 효과적으로 활용할 수 있다.
단점
단점으로는 초기 설정이 복잡하다는 점과 시스템 안정성을 위해 지속적인 유지 보수와 모니터링이 필요한 점이 있다. 또 메시지 크기에 제한이 있어서 높은 처리량이 필요한 환경에서는 Kafka 같은 고성능 메시지 브로커가 더 적합할 수 있다.
언제 사용하면 좋을까?
비동기 작업 처리가 필요한 경우에 유용하게 사용할 수 있다. 예를 들어 알림 전송 등과 같이 즉각적인 결과를 요구하지 않는 작업의 경우 RabbitMQ를 사용하면 큐에 저장해 순차적으로 처리할 수 있기 때문에 유용하다. 또 분산 시스템 간의 통신을 관리하는 데에 적합하다. MSA 환경에서 개별 서비스들이 메시지를 교환하도록 할 수 있다.
실습한 내용
https://github.com/muncool39/study-mass-stream-processing/tree/main/RabbitMQ
'TIL' 카테고리의 다른 글
[TIL] Validation 시간 검증 어노테이션 (0) | 2025.01.06 |
---|---|
[TIL] 배열 Request를 Json으로 표현하는 방법 (0) | 2024.12.31 |
[TIL] Grafana 개념과 주요 특징 (0) | 2024.12.23 |
[TIL] Prometheus 개념과 주요 특징 (0) | 2024.12.20 |
[TIL] 엔티티 변경 사항 Q 클래스에 반영하기 (0) | 2024.12.13 |
블로그의 정보
note
달쿨