中间件 | RabbitMq - [AMQP 模型]

INDEX

      • [§1 全局示意](#§1 全局示意)
      • [§2 依赖](#§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 端删除以防止消息重复

§2 依赖

相关推荐
jyOverQ1 天前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
yoguo-2102 天前
TongWeb7控制台部署应用时,应用包大小限制
中间件·tongweb
jyOverQ2 天前
RabbitMQ 延迟消息怎么实现?TTL 与死信队列
分布式·后端·rabbitmq·ruby
__zRainy__2 天前
Node系列 · Express:cors 中间件
中间件·express
StevenSurpass2 天前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
东小黑3 天前
mac安装RabbitMQ
分布式·rabbitmq
程序员小八7774 天前
Go Web 工程化:日志、配置与错误处理中间件,让服务「能上线」
前端·中间件·golang
tqs_123454 天前
SaaS 多租户 Agent 平台实战:自研 Agent 中间件 SDK,Nacos 配置驱动实现开箱即用
中间件
未若君雅裁4 天前
自定义中间件:Node-style 与 Wrap-style 钩子全解析
python·中间件·langchain
JAVA面经实录9174 天前
RabbitMQ 完整面试题答案
java·rabbitmq·java-rabbitmq