内部的には、RabbitMQはErlang/OTP(並行処理、分散、フォールトトレランス対応システムに適している)上に構築され、メッセージをエクスチェンジ経由でキューにルーティングし、メッセージストレージ、メモリ、フロー制御を管理します。内部動作を理解することで、RabbitMQの動作についてより深い理解が得られます。
Erlang/OTPに基づく構築
RabbitMQ is written in ERLANG (on the OTP framework):
→ Erlang is designed for CONCURRENT, DISTRIBUTED, FAULT-TOLERANT systems (telecom origins)
→ lightweight processes, message passing, supervision → suits a message broker well
→ enables RabbitMQ's concurrency, clustering, and reliability
→ the Erlang foundation is why RabbitMQ handles many connections and is fault-tolerant
メッセージフローとストレージ
→ a published message → EXCHANGE → (routing via bindings) → QUEUE(S) → consumer
→ STORAGE: messages held in MEMORY for speed; PERSISTENT messages also written to disk
(durable); under memory pressure, messages may be PAGED to disk
→ LAZY QUEUES → keep messages on disk (for large queues, less memory)
→ queues are processes; the broker manages routing, delivery, acks
