一 是什么:有什么优势MQ消息队列就是“跨程序传消息的中间件”像快递驿站程序A快递员把消息快递放进去程序B收件人按自己节奏取。它有三大作用异步不用等对方处理完提高系统响应速度比如下单后不用等支付结果返回直接提示“下单成功”。解耦程序间通过MQ通信互不依赖比如订单系统和物流系统订单发消息到MQ物流自己取订单系统不管物流是否正常。削峰像三峡大坝存洪水用稳定资源应对突发流量比如秒杀时大量请求先放MQ系统慢慢处理不会被冲垮。其性能比ActiveMQ性能好吞吐量比RabbitMQ高消息可靠性比Kafka好它功能全面支持延迟队列、死信队列、事务消息等。用Java开发方便定制尤其适合金融等对可靠性要求高的场景。二 怎么用从单机到高可用集群1. 单机服务搭建核心组件nameserver像“通讯录”记录broker地址和broker像“仓库”存消息。步骤下载安装包→调整JVM内存默认要求高学习时改小→启动nameserver→启动broker指定nameserver地址。2. 消息收发体验命令行测试用官方脚本发1000条消息再启动消费者接收验证服务正常。Java客户端建Maven项目引入依赖写生产者发消息到Topic和消费者订阅Topic收消息代码几行代码就能跑通。3. 可视化管理装个Dashboard工具网页版能直观看到集群状态、消息分布、消费进度等像给RocketMQ装了“监控屏”。4. 分布式集群2主2从单机怕故障搭主从集群2个Master处理请求2个Slave备份数据分布在3台服务器。Master挂了Slave有数据备份消息不丢。5. Dledger高可用集群主从集群的Slave不能自动变MasterDledger集群解决这个问题基于Raft协议多数同意机制3个节点自动选举Leader类似MasterLeader挂了其他节点能立刻顶上实现“故障自动切换”保证服务不中断。三 核心架构RocketMQ的“五脏六腑”nameserver“大脑中枢”独立运行记录broker位置协调客户端和broker通信。broker“核心仓库”存消息、处理收发请求是最关键的组件需要主从/集群保护。客户端生产者发消息和消费者收消息像“快递员”和“收件人”通过nameserver找到broker。四 消息模型消息怎么存、怎么取Topic消息的“分类标签”比如“订单消息”“物流消息”是逻辑概念。MessageQueueTopic下的“实际存储队列”物理概念每个Topic会拆成多个Queue分布在不同broker上消息按FIFO顺序存。消费组Offset消费者按“组”消费每个组记录自己的消费进度Offset类似“已读页码”保证同一条消息在一个组里只被消费一次。