RabbitMq 初步认识
目录
1. 基本概念
2. RabbitMq 的工作流程
3. 协议
4. 简单的生产者, 消费者模型
4.1 我们先引入 rabbitmq 的依赖
4.2 生产者
4.3 消费者
1. 基本概念
- Pruducer : 生产者, 产生消息
- Consumer : 消费者, 消费消息
- Broker : RabbitMq Server, 用来接收和发送消息
- Connection : 是客户端和服务端的 tcp 连接, 负责传输客户端和服务端之间的所有数据和控制信息
- Channel : 通道, 一个 Connection 可以有多个通道, 主要作用是将消息的读写操作复用到同一个 tcp 连接上, 这样可以减少建立和关闭连接的开销, 提高性能
- Exchange : 交换机, 将消息路由到对应的 Queue
- Queue : 队列, RabbitMq 中用来存放消息的内部对象
- BindingKEy (PoutingKey) : 生产者在发送消息时, 会发送一个 BindingKey, 用来匹配交换机, 交换机与队列之间的绑定也是通过 BindingKey 实现的, 一个交换机可以绑定多个队列, 统一交换机可以与不同的队列进行绑定, 使用的 BindingKey 是不同的
- Virtual host : 虚拟主机, 为消息队列提供了逻辑上的隔离机制
2. RabbitMq 的工作流程
- Producer 生产了一条消息
- Producer 连接到 RabbitMq Broker, 建立一个连接(Connection), 开启一个信道(Channel)
- Producer 声明一个交换机(Exchange), 路由信息
- Producer 声明一个队列(Queue), 存放信息
- Producer 发送消息至 RabbitMq Broker
- RabbitMq Broker 接收消息, 并存入响应的队列(Queue)中, 如果未找到相对应的队列, 则根据生产者的配置, 选择丢弃或者回退给生产者
3. 协议
- 使用 AMQP 协议, 是一种高级消息队列协议, AMQP 定义了一套确定的消息交换功能, 包括交换器(Exchange), 队列(Queue)等. 这些组件共同工作, 使得生产者能够将消息发送到交换器. 然后由队列接收并等待消费者接收. AMQP还定义了一个网络协议, 允许客户端应用通过该协议与消息代理和 AMQP 模型进行交互通信