1) AMQP의 RPC 프레임 구조
- AMQP 스펙에는 C++, 자바, 파이썬 같은 프로그래밍 언어의 객체 지향 개념과 유사한 클래스와 메소드를 사용하며
클라이언트와 서버 간의 공통 모델인 AMQP 명령이 정의돼 있다.
AMQP의 클래스는 기능의 범위를 정의하며 각 클래스에는 서로 다른 작업을 수행하는 메소드가 있다.
- 연결 협상 과정에서 RabbitMQ 서버는 프레임으로 마샬링된 Connection.Start 명령을 클라이언트로 전송한다.
Connection.Start 명령에는 AMQP 클래스와 메소드라는 두 가지 구성 요소가 있다.
- AMQP 스펙에는 많은 명령이 있지만, 대부분의 사람들은 이를 건너뛰고 메시지를 주고받는 명령에 대해서만
알고 싶어하는 경향이 있다.
그러나 RabbitMQ를 사용해 클라이언트와 주고받는 명령이 실제로 어떻게 애플리케이션에서 실행되는지
이해하는 것이 중요하다.
2) AMQP 프레임 컴포넌트
-RabbitMQ에서 AMQP 명령을 전송하거나 수신할 때 필요한 모든 인자들은 데이터 구조로 캡슐화된 프레임으로
인코딩돼 전송된다.
프레임은 명령과 해당 인자를 인코딩해 각 프레임이 서로 구분되도록 하는 효율적인 방법이다.
프레임은 지하철의 열차 한 칸과 유사하다고 생각할 수 있는데,
열차 한 칸은 서로 동일한 기본 구조로 구성돼 있으며, 포함하고 있는 내용으로 서로 구분된다.
- 저수준 AMQP 프레임도 마찬가지다.
저수준 AMQP 프레임은 다섯 개의 별개 구성 요소로 구성된다.
1. 프레임 유형
2. 채널 번호
3. 프레임 크기(바이트)
4. 프레임 페이로드(Payload)
5. 끝 바이트 표식(ASCII 값 206)
- 저수준 AMQP 프레임은 세 개의 필드로 구성된 프레임 헤더로 시작한다.
첫 번째 필드는 프레임 유형을 나타내는 단일 바이트고, 두 번째 필드는 프레임이 속하는 채널을 지정한다.
세 번째 필드는 프레임 본문의크기를 바이트로 표현한다.
프레임 구조체의 마지막에는 프레임의 끝을 나타내는 바이트 마커가 있다.
- 프레임 내부 헤더와 마지막 바이트 마커 사이에는 페이로드가 있다.
열차에서 내용물을 보호하는 열차 칸과 마찬가지로 프레임은 운반하는 내용을 무결성 있게 보호하도록 설계됐다.
'RabbitMQ in depth' 카테고리의 다른 글
[RabbitMQ in depth] RabbitMQ와 AMQP (0) | 2025.05.16 |
---|