文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。

消息队列基础概念【二、Topic vs Queue 发布/订阅与点对点模式】

一、概念区分

特性Queue(点对点)Topic(发布/订阅)
消息模式点对点发布/订阅
消息消费一个消息只能被一个消费者消费一个消息可以被多个订阅者消费
消费者关系消费者竞争队列中的消息消费者独立订阅 Topic,可接收全部消息
典型场景任务分发、削峰填谷广播通知、事件推送、日志广播
示意单个消息 → 单个消费者单个消息 → 多个订阅者

二、点对点模式(Queue)

1. 工作原理

  • **生产者(Producer)**发送消息到 队列(Queue)
  • 队列保证 消息顺序(FIFO),存储未被消费的消息。
  • **消费者(Consumer)**从队列拉取消息,消费后发送 ACK 确认。
  • 同一条消息只会被 一个消费者消费,其他消费者无法重复消费。

2. 优点

  • 负载均衡天然实现:多消费者同时消费队列,消息自动分发。
  • 消息不丢失:结合持久化和 ACK 机制。
  • 简单直观,适合任务调度、后台异步处理。

3. 缺点

  • 无法广播消息,适用场景有限。
  • 消费者数量增加时,消息分发仍需协调队列容量和顺序。

4. 典型应用场景

  • 异步任务处理(如订单处理、邮件发送)
  • 流量削峰填谷(高并发请求排队)
  • 后台批量处理任务

三、发布/订阅模式(Topic)

1. 工作原理

  • 生产者将消息发送到 Topic/Exchange
  • 多个消费者订阅 Topic 或绑定队列。
  • 消息被 复制到所有订阅者 队列,保证每个订阅者都能接收到消息。

2. 优点

  • 广播能力强:消息可同时送达多个系统或应用。
  • 订阅者独立:新增消费者无需影响其他消费者。
  • 支持复杂路由:可结合 Tag/Filter/Topic 匹配消息。

3. 缺点

  • 消息量大时,占用存储资源增加。
  • 消费者处理速度慢可能导致消息积压,需要合理流控。

4. 典型应用场景

  • 事件通知系统(订单创建事件通知多系统)
  • 日志收集与监控(日志广播到多个分析系统)
  • 消息推送(App 通知、系统广播)

四、示意图(Mermaid)

1. Queue 模式

Producer
Queue
Consumer1
Consumer2

消息在队列中由消费者竞争消费,每条消息只会被 一个消费者处理

2. Topic 模式

Producer
Topic/Exchange
Consumer1
Consumer2
Consumer3

每条消息被 复制到所有订阅者,保证广播能力。


五、Queue vs Topic 总结

特性QueueTopic
消息消费单消费多消费
消息顺序FIFO可顺序或无序(取决于队列)
消费者关系竞争订阅
典型场景异步任务、削峰填谷广播通知、日志/事件流
优势负载均衡、任务分发广播、灵活路由
劣势无法广播消费者慢会积压
posted @ 2025-09-17 16:47  NeoLshu  阅读(6)  评论(0)    收藏  举报  来源