1. AMQP(Advanced Message Queue Protocol)
- 메시지 지향 미들웨어를 위한 개방형 표준 프로토콜
- 메시지 지향 미들웨어 시스템은 분산 시스템에서 서로 다른 애플리케이션이 메시지를 통해 통신할 수 있도록 해줌
- 신뢰성 있는 메시징을 보장하고 다양한 메시징 패턴과 시나리오를 지원하기 위해 설계됨
- 메시지 브로커와 클라이언트 애플리케이션 간의 통신을 위한 규약을 정의하며, 메시지의 안전한 전달, 라우팅, 큐잉, 백-프레셔 처리등 다양한 기능을 포함함
- RabbitMQ, Apache Qpid, SwiftMQ 등 여러 메시지 브로커에 구현되어 있음
2. 특징
1) 개방형 프로토콜
- 완전히 공개된 표준이며 다양한 언어와 플랫폼에서 구현될 수 있음
- 이로 인해 여러 시스템과 애플리케이션 간 상호 운용성이 용이함
2) 신뢰성 있는 메시징
- 메시지를 안정적으로 전달하는 다양한 기능을 제공함
- 메시지 확인(acknowledgements)과 거부(nacknowledgements), 지속성(persistence), 트랜잭션 처리 등을 통해 신뢰성 있게 관리될 수 있음
3) 유연한 라우팅
- Direct, Topic, Fanout, Header 등의 교환기(exchange)타입을 통해 다양한 라우팅 방식 지원
4) 다양한 메시징 패턴 지원
- 요청/응답, 발행/구독, 워크 큐 등 다양한 메시징 패턴을 구현할 수 있음
- 필요에 따라 유연하게 메시징 아키텍처를 설계할 수 있음
5) 보안
SSL/TLS를 통한 메시지 암호화와 인증 메커니즘을 제공하여 통신을 보호함
3. 구성 요소
1) 메시지(message)
- 데이터와 메타데이터(헤더와 프로퍼티)를 포함하는 정보 단위
- 메시지는 애플리케이션 간에 전달되는 데이터 패킷
2) 큐(Queue)
- 메시지가 전달되어 임시로 저장되는 대기열
- 소비자(Consumer)가 메시지를 처리할 준비가 될 때까지 큐에 보관됨
3) 교환기(Exchange)
- 메시지를 적절한 큐로 라우팅하는 역할
- 교환기 타입에 따라 메시지 라우팅 방식이 결정됨
4) 바인딩(Binding)
- 교환기와 큐를 연결하는 규칙
- 바인딩은 메시지가 특정 큐로 라우팅되어야 하는 조건 정의