AMQP (Advanced Message Queuing Protocol)는 메세지 기반의 미들웨어(Middleware)를 위한 표준 어플리케이션 레이어 프로토콜이다.
RabbitMQ는 AMQP를 수행하는 오픈소스 미들웨어 소프트웨어이다.
본문은 RabbitMQ 가이드를 기반으로 AMQP의 이해와 설치 팁을 다룬다.
AMQP의 주요 요소
브로커(Broker)
생산자(Publishers/Producers)로 부터 메세지를 받아서, 소비자(Consumers/Subscriber)에게 전달 한다.
큐에서 메세지 삭제를 위해서는 다음의 두 가지 선택 사항이 있다.
- 브로커가 어플로 메세지를 보낸 후 : 성능 이점
- 어플에서 응답을 받은 후 : 안정성 이점
브로커로의 연결(Connection) 후 채널(Channel)을 열어 반복적인 TCP 연결을 막는다.
선언 영역
Exchange는 다음과 같은 타입을 선언할 수 있다.
Default
기본적으로 큐와 동일한 이름의 경로키(routing key)를 암묵적으로 사용한다.
Direct
경로키와 일치하는 큐로 메세지를 보낸다.
소비자가 여럿 일 경우, RR(Round Robin)과 같은 분배 알고리즘을 사용한다.
Fanout
모든 큐로 복제 메세지를 보낸다.
Topic
다양한 publish/subscribe 패턴으로 정의 가능하다.
Headers
헤더에 해당되는 큐로 메세지를 보낸다.Queue는 다음과 같은 속성과 함께 선언될 수 있다.
Name : 큐의 이름
Durable : 브로커 재시작 시에도 살아남
Exclusive : 단지 하나의 연결만 사용됨, 연결을 닫으면 삭제
Auto-delete : 소비자가 한개도 없으면 삭제됨
* 속성은 큐가 생성되기 전 선언
수행 영역
Bind는 Exchange와 Queue를 연결한다.
Exchange가 수단(방법)이고 Queue를 목적지라고 할때, Binding은 경로를 말한다.
Consume은 다음 두가지 방법으로 수행 할 수 있다.
Push API : 등록된 소비자에게 메세지가 배송됨
Pull API : 필요할때 메세지를 당겨옴
RabbitMQ 설치 시 유의 사항
관리(management) 플러그인 설치
rabbitmq-plugins enable rabbitmq_management
관리 Web UI 접속 (기본 접속 포트 : 15672)
기본으로 제공되는 Guest 계정은 원격 접속을 허용하지 않는 이유로, rabbitmqctl (cli 관리 명령어)로 관리 계정을 만들어 접속한다.
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
0 개의 댓글:
댓글 쓰기