欢迎光临
我们一直在努力

RabbitMQ学习笔记-核心架构

理解工作原理之前,需要先掌握它的核心组件以及组件之间的交互方式。它的核心围绕的是“生产者、交换机、队列、消费者”这个链路展开。同时需要连接、信道等通信组件的辅助。

1、核心组件解析

RabbitMQ组件

核心功能

生产者(Producer)

生成并发送消息,发送前需指定路由键(Routing Key)和目标交换机。

交换机(Exchange)

接收生产者发送的消息,根据自身类型和绑定规则(Binding Key)将消息路由到对应队列。

队列(Queue)

用来存储消息,只有队列中的消息才能被消费者获取;可以进行持久化、限流、优先级处理等配置。

消费者(Consumer)

监听队列,获取消息并执行业务逻辑(如库存扣减、发送短信);处理完之后需要向RabbitMQ发送确认信号。

绑定(Binding)

建立交换机和队列的关联关系,同时指定绑定规则(Binding Key),用于匹配路由键(Routing Key)。

连接(Connection)

生产者/消费者与RabbitMQ服务器之间的TCP连接,是通信的基础。

信道(Channel)

复用TCP连接的轻量级的通信信道,避免频繁创建/销毁连接导致的性能开销;每个信道独立编号,支持并发通信。

2、核心架构图

值得注意的是,交换机、队列均属于RabbitMQ服务端(Broker)内部。交换机和队列之间没有直接的TCP连接,而是通过绑定(Binding) 关系来路由消息。交换机根据绑定的规则(Binding Key)决定把消息投递到哪些队列。这个投递发生在服务端内部,是内存层面的转发,不需要额外的TCP连接。

3、具体的交互流程

RabbitMQ的消息流转核心流程可概括为5步:

  •  生产者通过与RabbitMQ服务器的TCP连接建立信道,向指定交换机发送消息,并携带路由键(Routing Key)。
  •  交换机根据自身类型(如Direct、Fanout)和绑定规则(Binding Key与Routing Key的匹配关系),将消息路由到一个或多个队列。
  •  消息被存储在队列中,等待消费者获取;若配置了持久化,消息会被写入硬盘,即使服务器重启也不会丢失。
  •  消费者通过信道监听队列,获取消息并执行对应的业务逻辑。
  •  消费者处理完成后,向RabbitMQ发送ACK(确认)信号,RabbitMQ收到后删除队列中的该条消息;若处理失败,可发送NACK(拒绝)信号,消息会重新入队或进入死信队列。
  • 赞(0)
    未经允许不得转载:171主机测评 » RabbitMQ学习笔记-核心架构
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址