Notice
Recent Posts
Recent Comments
Link
정보통신 랩
AMQP : 이기종 시스템 간 메시지를 교환하는 표준 프로토콜 본문
반응형
AMQP(Advanced Message Queuing Protocol, 고급 메시지 큐잉 프로토콜)는 서로 다른 시스템이 메시지를 안전하게 주고받을 수 있도록 만든 개방형 메시징 프로토콜입니다. 이 글에서는 AMQP의 필요성과 구성 요소, 특징, MQTT와의 차이를 정리합니다.
1. 주제
AMQP(Advanced Message Queuing Protocol, 고급 메시지 큐잉 프로토콜)
2. 개요
기업에서 쓰는 메시지 미들웨어(애플리케이션 사이의 메시지 전달을 중개하는 소프트웨어)는 제품마다 방식이 달라 서로 연동하기 어려웠습니다. 예를 들어 Java의 메시징 표준인 JMS(Java Message Service)는 프로그래머가 쓰는 API 수준을 표준화했을 뿐, 구현체 사이의 상호운용성은 제공하지 못했습니다.
이를 개선하기 위해 2003년 JPMorgan Chase에서 AMQP가 시작되었고, 이후 OASIS 표준(1.0, 2012년)과 ISO/IEC 19464(2014년 승인)로 표준화되었습니다. AMQP 1.0은 두 당사자 사이에 메시지를 신뢰성 있게 교환하기 위한 바이너리 와이어(전송선) 수준 프로토콜이며, 표준 인코딩으로 메시지를 보내고 받으므로 표준을 따르는 프로세스끼리 연동할 수 있습니다.
3. 개념
- 서로 다른(이기종) 시스템이 비즈니스 메시지를 안전하게 주고받도록 두 당사자 사이의 신뢰성 있는 메시지 교환을 정의한 개방형 메시징 프로토콜임
4. 개념도

5. 주요기술
| 기술 | 내용 |
| Publisher | 메시지를 만들어 브로커의 Exchange로 발행함(Queue로 직접 보내지 않음) |
| Exchange | Binding 규칙에 따라 메시지 사본을 Queue로 라우팅함. 유형에는 Direct, Fanout, Topic, Headers가 있음 |
| Queue | 메시지를 Consumer에게 전달되기 전까지 보관함 |
| Consumer (Subscriber) |
Queue의 메시지를 받아 처리하고 처리 완료(acknowledgement)를 브로커에 알림. 브로커는 확인을 받아야 Queue에서 메시지를 제거하며, 확인 없이 종료되면 재전달함 |
Publisher → Exchange → Queue → Consumer로 이어지는 구조는 AMQP 0-9-1 모델(RabbitMQ 등)의 개념이며, AMQP 1.0은 메시지를 전송하는 와이어 수준 규격을 정의함
6. 주요특징
| 특징 | 내용 |
| 표준 프로토콜 | OASIS 표준(2012년)이며 ISO/IEC 19464로도 승인됨(2014년) |
| 비동기 처리 | Publisher와 Consumer 사이에 Queue를 두어, 보내는 쪽과 받는 쪽이 동시에 동작하지 않아도 메시지를 주고받을 수 있음 |
| 전달 보장 | AMQP 1.0은 최대 한 번(at-most-once), 최소 한 번(at-least-once), 정확히 한 번(exactly-once) 전달 수준을 지원함 |
| 신뢰성 기능 | 처리 확인(acknowledgement), 영속(persistent) 메시지와 durable Queue를 지원하며, AMQP 1.0은 트랜잭션 계층을 정의함 |
7. AMQP와 MQTT 비교
| 구분 | AMQP | MQTT |
| 표준화 | OASIS 표준(1.0), ISO/IEC 19464 | OASIS 표준 |
| 통신 구조 | AMQP 0-9-1은 Exchange가 Binding 규칙에 따라 Queue로 라우팅함 | 토픽 이름과 토픽 필터를 기준으로 서버가 구독자에게 전달함 |
| 전달 보장 | at-most-once, at-least-once, exactly-once | QoS 0(최대 한 번), QoS 1(최소 한 번), QoS 2(정확히 한 번) |
| 주요 대상 | 비즈니스 메시징 | 자원이 제한된 환경의 M2M·IoT 통신 |
| 프로토콜 구조 | 타입 시스템, 전송, 메시징, 트랜잭션, 보안 계층으로 구성한 규격 | 고정 헤더(1바이트 + Remaining Length)로 구성한 가벼운 구조 |
8. 기술동향·개선사항·활용
- Apache Qpid, Apache ActiveMQ, Azure Service Bus, IBM MQ 등 여러 브로커가 AMQP 1.0을 지원하며, RabbitMQ도 4.0부터 지원함(기준일: 2026-10-15)
- AMQP 0-9-1과 1.0은 서로 상당히 달라서, 사용하는 브로커와 클라이언트가 지원하는 버전을 먼저 확인해야 함
용어 설명
- AMQP(Advanced Message Queuing Protocol, 고급 메시지 큐잉 프로토콜) : 서로 다른 시스템이 메시지를 안전하게 주고받도록 정한 개방형 메시징 프로토콜
- 메시지 미들웨어(Message Middleware) : 애플리케이션 사이의 메시지 전달을 중개하는 소프트웨어
- JMS(Java Message Service) : Java에서 메시지를 주고받는 방법을 정한 API 표준
- 브로커(Broker) : 메시지를 받아 보관하고 대상에게 전달하는 중개 서버
- Exchange·Binding·Queue : 메시지를 규칙(Binding)에 따라 대기열(Queue)로 보내는 라우터(Exchange)
- Publisher·Consumer : 메시지를 만들어 보내는 쪽과 받아서 처리하는 쪽
- OASIS(Organization for the Advancement of Structured Information Standards) : AMQP, MQTT 같은 정보 표준을 만드는 국제 표준화 단체
- MQTT(Message Queuing Telemetry Transport) : 자원이 제한된 IoT 환경에 맞춘 가벼운 발행·구독 메시징 프로토콜
- at-most-once·at-least-once·exactly-once : 메시지를 최대 한 번, 최소 한 번, 정확히 한 번 전달하는 전달 수준
- M2M(Machine to Machine) : 기계끼리 사람의 개입 없이 주고받는 통신
참고 출처
- OASIS, AMQP Version 1.0 Core Overview
- RabbitMQ, AMQP 0-9-1 Model Explained
- OASIS, MQTT Version 5.0
- Apache Qpid Proton, Overview (AMQP 1.0 전달 보장)
- Wikipedia, Advanced Message Queuing Protocol (개발 배경, 표준화 이력)
반응형
'정보통신' 카테고리의 다른 글
| MTBF·MTTF·MTTR·가동률 : 통신장비 신뢰성 지표 4가지 (0) | 2026.10.17 |
|---|---|
| XMPP : XML 기반 실시간 메시지·프레즌스 교환 프로토콜 (0) | 2026.10.15 |
| BFD : 라우터 간 양방향 경로 장애를 빠르게 감지하는 프로토콜 (0) | 2026.10.15 |
| QoS(Quality of Service) (0) | 2026.10.15 |
| 스파인·리프 아키텍처 : 데이터센터 East-West 트래픽 구조 (0) | 2026.10.15 |
