250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- JQuery
- mom
- 자동배포
- poi
- java
- spring
- 제이쿼리그리드
- Javascript
- docker
- DevOps
- apache.poi
- 대용량 업로드
- jqGrid
- 보안
- 자동빌드
- rabbitmq
- MessageQueue
- Jenkins
- ORM
- ci/cd
- stream api
- 스트림
- Stream
- JPA
- 그리드
- QueryDSL
- sqlserver
- 엑셀 업로드
- mssql
- 자바8
Archives
- Today
- Total
개발 메모장
[MOM] RabbitMQ(2) - 정의 본문
728x90
#. RabbitMQ란 무엇인가?
- AMQP(Advaced Message Queing Protocol)를 기반으로 하는 MOM을 위한 표준 프로토콜로 시스템 간의 정보 교환 및 메시지 송수신을 지원하는 메시지 브로커입니다.
- Producer와 Consumer 간의 메시지 송수신의 중개 역할을 하며 비동기적으로 통신할 수 있도록 하여 결합도를 줄이고 유연성을 제공합니다.
#. RabbitMQ의 구성
- Queue
- FIFO 방식으로 동작하며, Producer에 의해 생성된 메시지가 소비되기 전까지 저장되는 곳이고 Consumer에 의해 사용됩니다. - Exchange
- 메시지를 받아 Producer의 의도에 맞는 Queue로 라우팅하는 역할을 합니다.
- 메시지는 Exchange로 보낸 후 Queue로 라우팅되어 전달됩니다. - Binding
- Exchange와 Queue 간 연결을 설정하는 것으로 어떻게 전달할 지를 결정합니다. - Producer
- 메시지를 생성하여 Exchange에 보내는 역할입니다. - Consumer
- Queue로부터 메시지를 받아 처리하는 역할을 합니다.
- Consumer가 Queue에서 메시지를 가져와 처리하면 RabbitMQ는 Queue에서 메시지를 제거합니다.
#. Exchange Routing 전략
- 다양한 라우팅 요구사항 및 사용 사례에 대한 적합한 유형의 Exchange를 지원하므로 요구에 맞추어 적절한 방법을 선택할 수 있습니다.
1. Direct Exchange
- Queue와 Exchange가 특정 라우팅 키를 이용해 바인딩 되어 해당 Queue에 메시지를 전달합니다.
- 특정 Queue에 메시지가 하나씩 전달됩니다.
2. Fanout Exchange
- 라우팅 키와 상관없이 바인딩 된 모든 Queue를 대상으로 메시지를 전달합니다.
3. Topic Exchange
- 특정 라우팅 키 패턴을 기반으로 하나 이상의 Queue에 전달합니다.
- Pub / Sub과 같은 패턴에서도 사용됩니다.
4. Headers Exchange
- 라우팅 키가 아닌 메시지 속성 중 Headers 테이블을 사용해 특정 규칙의 라우팅을 처리합니다.
- 메시지 Header의 값을 기반으로 라우팅됩니다.

#. 특징
1. 다양한 메시징 패턴 지원
- Pub / Sub, 요청 및 응답, 라우팅, 큐 등 다양한 메시징 패턴을 지원합니다.
- Queue는 Consumer가 메시지를 소비할 때까지 메시지를 저장할 수 있습니다.
2. 다양한 플러그인 지원
- 다양한 플러그인을 지원하기에 시스템의 기능적 확장이 용이합니다.
3. 확장성
- 클러스터에 노드를 추가해 수평적으로 확장할 수 있으며 이를 통해 증가된 로드를 처리할 수 있습니다.
- 메시지를 여러 대기열에 분산시켜 로드 균형을 조절할 수 있는 샤딩을 지원합니다.
4. 보안성
- 사용자 계정의 LDAP 등 다양한 인증 메카니즘을 지원합니다.
- 권한 및 역할 부여를 통해 세분화 된 엑세스 제어가 가능합니다.
- 또한 SSL/TLS를 통한 암호화된 통신을 지원합니다.
#. 장점 및 단점
- 장점
1. 유연한 라우팅
-Direct, Fanout, Topic, Headers Exchange를 통해 복잡한 라우팅 바인딩을 지원합니다.
2. 신뢰성 높은 메시징
- 메시지 내구성, 트랜잭션을 지원하여 메시지가 손실되지 않도록 보장합니다.
3. 높은 가용성
- 클러스터링 또는 미러링 Queue를 설정해 가용성과 장애 내성을 향상시킬 수 있습니다.
4. 관리 도구
- 웹 기반 관리 인터페이스, 명령줄 도구, HTTP 기반 API를 제공하여 브로커를 모니터링하고 관리할 수 있습니다. - 단점
1. 복잡한 구성
- 클러스터, 고가용성 및 샤딩 설정 및 관리는 복잡하고 신중한 구성이 필요합니다.
2. 오버헤드
- 추가 기능 등으로 인해 성능에 영향을 미칠 수 있는 오버헤드가 발생할 수 있습니다.
3. 확장성 한계
- RabbitMQ는 수평 확장을 지원하지만, 매우 대규모 배포의 경우 일부 다른 메시징 시스템에 비해 관리가 어려울 수 있습니다.
4. 자원 소모
- 메시지 지속성과 미러링과 같은 기능을 사용할 때 브로커의 자원 소모가 상당할 수 있습니다.
#. 위와 같이 RabbitMQ에 대해 간략하게 알아보았습니다.
#. 다음 내용부턴 예제에 대한 소스를 살펴보도록 하겠습니다.
===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
===========================================================
728x90
'MOM' 카테고리의 다른 글
[MOM] RabbitMQ(4) - Consumer 예제 (0) | 2024.08.22 |
---|---|
[MOM] RabbitMQ(3) - Producer 예제 (0) | 2024.08.21 |
[MOM] RabbitMQ(1) - 도커 설치 (0) | 2024.08.19 |