INDEX
- §1 全局示意
- §2 依赖
§1 全局示意
AMQP,即高级消息队列协议(Advanced Message Queuing Protocol),整体架构如下图
- producer 发送消息给 rabbit mq broker
- rabbit mq broker 分发消息给 consumer消费
- producer/consumer 都通过 connection 与 borker 进行连接
- AMQP 的连接是典型的长连接
- 底层通过 TCP实现
- connection 通过 channel 实现多路复用
- 这是为了防止服务器同一时间维护多个 TCP 长链接,以节省系统资源
- broker 中可能拆分多个 VHost
- broker 的实际能力都有 VHost 对外提供
- VHost 可以在单机中隔离多个环境,类似常见的虚拟机
- 客户端会在连接协商时期确定要连接的 VHost
- broker 中通过 exchange 接受消息
- 消息的实际存储是由 queue进行的
- 但 broker 通过 exchange 直接对接 channel
- exchange 通过 bingding 与具体的 queue 进行绑定
消息从 producer 发出
消息共用同一个 connection 由 channel 多路复用的传输
消息被 exchange 接受
消息被 exchange 按 bingding 保存到实际的 queue
- 消息会被 consumer 拉取
- 消息会通过 ack 机制确认拉取成功
- 被拉取的消息会在 broker 端删除以防止消息重复