flowchart LR
N0["01 消息模型"]
N1["02 交付与顺序"]
N2["03 幂等消费"]
N3["04 积压与死信"]
N4["05 Kafka 实践"]
N5["06 队列产品对照"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
消息与事件驱动
现代 Java Backend Engineering 学习路线:消息与事件驱动
0 子目录5 文档

CHAPTER OVERVIEW · 章节概览
先理解消息交付、顺序和重复,再比较产品;可靠消费与积压治理比只记配置更重要。
本章学习路线
箭头表示建议的学习顺序;先理解问题,再逐步进入实现与实践。
按顺序学习
5消息与事件驱动:共同模型先于产品配置把通知放进消息队列,接口就不必等邮件真正发出再返回。但任务交出去以后,还要知道有没有送达、能否重复执行、失败后怎么处理。本阶段先讲这些共同问题,再比较不同消息系统。消息队列基础:交付、顺序、幂等、积压与死信下单接口把“发送通知”交给后台处理,可以缩短用户等待,但也增加了一个问题:后台处理到一半崩溃怎么办?本章围绕投递、确认和重复处理讲消息可靠性,先把一条消息的生命周期弄清楚。Apache Kafka:日志、分区、副本、消费组与事务Kafka 中,消费者处理过的消息不一定立即从存储中消失;消费位置由 offset 表示。理解日志和位置这两个概念,再看分区、消费组和重放,就能解释它与传统工作队列的许多差异。RabbitMQ 与 RocketMQ:路由、队列、可靠性和选择选择消息系统时,可以先拿自己的场景提问:怎样路由,是否要求顺序,延迟任务怎么做,失败后如何重试?下面按这些问题比较 RabbitMQ 与 RocketMQ,而不是用一句“谁性能更好”结束选型。高性能与消息队列推荐阅读看消息中间件教程时,先跟踪一条消息从发送到确认的过程,再学习产品特有功能。压测也应围绕这条路径观察积压和处理速度,而不是只记录一个看起来很高的吞吐数字。