🍗 RabbitMQ
2022年10月10日
- 中间件
🍗 RabbitMQ
1. 消息队列的作用
1) 作用
- 异步
- 削峰
- 解耦
2) 带来的问题
- 系统复杂性增加
- 数据一致性
- 如何保证消息一定能比消费?
- 分布式事务
- 如何保证消息一定能比消费?
- 可用性
2. 常见消息队列对比
3. 消息队列常见问题
1) 顺序消费
2) 消息不丢失
3) 重复消费
4) 消息高可用
5) 延迟消费
RabbitMQ 组成
Publisher
- 生产者
Consumer
- 消费者
Broker
- 一个 RabbitMQ 实例就是一个 Broker
Exchange
- 交换机,用于接收 Publisher 发送的消息,并决定将消息路由给哪条队列
- 分发策略:
- Direct
- 消息中的 routing key 若与 Binding 中的 routing key 完全一致,则将消息发送到对应的队列中
- Fanout
- 消息发送给所有绑定的队列
- 转发消息最快
- Topic
- 将 routing key 和某个模式匹配
- 只能识别通配符
#
&*
- Direct
Binding
- 绑定关系,用于消息队列 & 交换机 中的关联
Queue
- 消息队列,用于保存消息,直到发送给 消费者
- 一个消息 可放入 一个 | 多个 消息队列中
Message
- 消息头 & 消息体 组成
- 消息头:
- routing key
- 优先级
- ...
RabbitMQ 特点
- 微秒级,延迟低
- 基于
erlang
开发,并发能力较强