RabbitMQ 따라잡기

RabbitMQ 따라잡기 - 8점
데이비드 도소트 지음, 장준호 옮김/에이콘출판


AMQP

- Advanced Message Queuing Protocol
- 상호 정보 교환이 가능한 메시징 프로토콜의 의미를 정의한 명세서
- 발행자와 소비자, 브로커 사이에 발생하는 상호작용
- 메시지와 명령어의 교환 형태를 정의


RabbitMQ

- AMQP 프로토콜을 구현한 오픈소스 메시징 브로커
○ 메시징: 시스템 간 메시지의 전달
- Erlang 구현체
- AMQP 0-9-1
○ 2011년 말 AMQP 1.0 (By OASIS) 공개 되었으나, RabbitMQ는 이를 지원하지 않음


주요 개념

브로커(Broker)
- 미들웨어 애플리케이션
- 발행자가 만든 메시지 수신, 이를 수신자나 다른 브로커에 전달

가상 호스트(Virtual Host)
- 브로커 내의 가상 영역
- 멀티테넌시 같이 대개 보안 상의 이유로 발행자와 소비자, 그리고 모든 AMQP 구성 요소를 분리할 수 있다.

연결(Connection)
- 발행자와 소비자, 브로커 사이의 물리적인 네트워크(TCP) 연결
- 클라이언트 단절이나 네트워크 또는 브로커에 장애가 발생했을 때 닫힌다.

채널(Channel)
- 발행자와 소비자, 브로커 사이의 논리적인 연결
- 하나의 연결 내에 다수의 채널을 설정할 수 있음
- 특정 클라이언트와 브로커 간에 간섭이 일어나지 않도록 서로 간에 상호 작용을 분리 가능
- 프로토콜 에러가 발생할 경우 닫힐 수 있다.

익스체인지(Exchange)
- 발행한 모든 메시지가 처음 도달하는 지점
- 메시지가 목적지에 도달할 수 있도록 라우팅 규칙 적용 담당
- 라우팅
○ direct: point-to-point
○ topic: publish-subscribe
○ fanout: multicast

큐(Queue)
- 메시지가 소비되기 전 대기하고 있는 최종 지점
- 익스체인지 라우팅 규칙에 의해 단일 메시지가 복사되거나 다수의 큐에 도달할 수 있다.

결합(Binding)
- 익스체인지와 큐 간의 가상 연결
- 메시지가 익스체인지에서 큐로 이동할 수 있도록 하는 역할
- 익스체인지 라우팅 규칙에 따라 큐를 결합하는데 라우팅 키를 사용할 수 있다.


후기

읽기에 지루한 편이었지만, RabbitMQ를 적용할 다양한 사례를 맛볼 수 있었다. 예제를 실행해 본 느낌은 RabbitMQ가 잘 만들어져 있다는 것이었고, 덕분에 큰 노력을 들이지 않고 메시징 큐 기능을 활용할 수 있겠다 싶었다.

댓글 쓰기

0 댓글