AMQP 프로토콜 소개
AMQP(Advanced Message Queuing Protocol)는 통합 메시징 서비스를 제공하는 애플리케이션 계층 표준 프로토콜로, 메시지 지향 미들웨어를 위해 설계된 애플리케이션 계층 프로토콜의 오픈 표준입니다. AMQP는 프로세스 간에 비동기 메시지를 전달하기 위한 네트워크 프로토콜입니다.
이 프로토콜을 기반으로 한 클라이언트와 메시지 미들웨어는 서로 다른 클라이언트/미들웨어 제품이나 개발 언어 등에 의해 제한받지 않고 메시지를 전달할 수 있습니다.
AMQP의 주요 특징은 메시지 지향, 대기열, 라우팅(피어 투 피어 및 게시/구독 포함), 신뢰성, 그리고 보안성입니다. AMQP는 메시지 제공자와 클라이언트의 동작을 강제하여 서로 다른 벤더 간 진정한 상호 운용성을 가능하게 합니다.
라우팅 메시지
AMQP 아키텍처에서 성공적인 메시지 라우팅은 세 부분으로 구성됩니다:
- 교환: 제작자가 메시지를 게시하는 곳
- 대기열: 소비자가 메시지를 받는 곳
- 바인딩: 스위치에서 특정 큐로 메시지가 어떻게 라우팅되는지에 대한 정보
교환 및 제속
그렇다면 메시지는 어떻게 대기열에 도달할까요? 소비자에게 메시지를 전달하려면 먼저 교환기에게 보내야 합니다. 그 후 특정 규칙이나 라우팅 키를 바탕으로 RabbitMQ가 메시지를 전달할 큐를 결정합니다.
규칙 또는 라우팅 키는 대기열을 교환에 바인딩할 수 있게 해줍니다. RabbitMQ는 메시지 내 라우팅 키를 바인딩에 사용된 키와 맞추려고 시도합니다. 메시지는 팬아웃, 토픽, 다이렉트, 헤더 등 네 가지 교환 유형 중 하나에 따라 큐로 전달됩니다
팬아웃 교환
이 교환 방식은 수신한 모든 메시지를 자신과 연결된 모든 큐에 방송합니다. 게시된 메시지에 제공된 라우팅 키는 무시됩니다.
주제 교환
이 교환 방식에서는 라우팅 키를 기반으로 메시지가 큐로 전송됩니다. 즉, 주제 교환으로 전송되는 메시지는 특정 라우팅 키를 가져야 하며, 이는 포인트로 구분된 단어 목록이어야 합니다(예: 'acs.deviceoperations.'). 문구 제한은 255바이트입니다.
구속 키는 라우팅 키와 동일한 형식이어야 합니다. 따라서 특정 라우팅 키로 전송된 메시지는 일치하는 바인딩 키로 묶인 각 큐에 전달됩니다.
바인딩 키는 다음과 같은 표현식 규칙을 허용합니다:
*(별표)는 단 하나의 단어만 대체할 수 있습니다 #(해시)는 0개 이상의 단어를 대체할 수 있습니다 큐가 "#"(해시) 바인딩 키로 바인딩되면, Fanout 팬아웃 교환과 마찬가지로 라우팅 키와 상관없이 모든 메시지를 수신합니다.
직접 교환
큐가 선언되면큐 이름을 라우팅 키로 사용하는 스위치에 자동으로 바인딩하세요。 라우팅 키가 일치하면 메시지가 적절한 큐로 전달됩니다.
헤더 교환
헤더 스위치는 주제 스위치와 다소 유사하지만, 주제 스위치와 달리 라우팅은 경로 키를 기반으로 하며, 헤더 스위치의 라우팅 값은 메시지의 헤더 데이터를 기반으로 합니다. 주제 스위치 라우팅 키는 문자열일 뿐이며, 헤더 스위치는 정수와 해시일 수 있습니다.
(끝)
|