在内部,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
