🍗 RabbitMQ

吞佛童子2022年10月10日
  • 中间件
  • 消息队列
大约 1 分钟

🍗 RabbitMQ

1. 消息队列的作用

1) 作用

  1. 异步
  2. 削峰
  3. 解耦

2) 带来的问题

  1. 系统复杂性增加
  2. 数据一致性
    • 如何保证消息一定能比消费?
      • 分布式事务
  3. 可用性

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 和某个模式匹配
      • 只能识别通配符 # & *

Binding

  • 绑定关系,用于消息队列 & 交换机 中的关联

Queue

  • 消息队列,用于保存消息,直到发送给 消费者
  • 一个消息 可放入 一个 | 多个 消息队列中

Message

  • 消息头 & 消息体 组成
  • 消息头:
    • routing key
    • 优先级
    • ...

RabbitMQ 特点

  1. 微秒级,延迟低
  2. 基于 erlang 开发,并发能力较强
上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou