2018년 12월 3일
AMQP (Advanced Message Queue Protocol)
I. 응용 계층 메시지 전달 표준, AMQP
가. AMQP(Advanced Message Queue Protocol)의 개념
클라이언트 미들웨어 브로커 간 데이터 교환을 위한 MQ기반 메시지 교환 프로토콜
나. AMQP 특징
이기종 간 메시지 교환 | – 이기종 시스템 간 벤더 종속 없이 표준화된 네트워크 프로토콜 사용 |
속도 및 응답성 | – 비용/기술/시간적 측면에서 최대한 효율적 메시지 교환 위한 MQ 사용 |
다. AMQP 기본 구성
Publisher | – 메시지 생성 및 Broker에 송신 |
Broker | – Subscriber에 pub와 매칭 메시지 전달/배포 |
Subscriber | – Broker로부터 매칭된 메시지 수신 |
II. AMQP Routing Model
가. AMQP Routing Model 구성도
구성도 | 설명 |
---|---|
– AMQP routing Model은 Exchange, Queue, Binding 등 구성 |
나. AMQP 구성요소
구성요소 | 특징 | 기능 |
---|---|---|
Exchange | MQ 바인딩 | – Publisher로부터 수신 MQ를 binding – 여러 exchange type 인스턴스 보유 |
Queue | 저장 후 전달 | – 메시지 저장 후 Subscriber에 전달 – 메시지 타입 exchange에 binding |
Binding | 1:1, 1:N 방식 | – exchange와 queue 관계 정의 – 1:N, N:1 등 여러 방식으로 binding |
Routing Key | 가상 주소 | – 송신 메시지 헤더에 포함 가상 주소 – exchange type은 Routing Key 이용 |
Exchange Type | 라우팅 알고리즘 | – 여러가지 상황에 대해 정의 알고리즘 Fan-out: 모든 큐로 라우팅 Direct: 라우팅 키를 큐에 1:N으로 매칭 Topic: 와일드카드 이용하여 큐에 매칭 Headers: key-value 정의 헤더로 결정 |
III. AMQP의 활용
프로토콜 | 활용 사례 | 기능 |
---|---|---|
RabbitMQ | Openstack 메시지큐 | – AMQP 프로토콜을 구현한 프로그램 – 오픈소스이며 많은 언어와 OS 지원 |
ActiveMQ | JVM기반 APP | – JMS클라이언트, 자바기반 오픈소스 – 다양한 언어와 프로토콜 지원 |
ZeroMQ | 임베디드 기반 기기 | – 임베디드 네트워크 메시징 – 단순, 효율적 프로토콜 고속 전송 |