第1章 消息队列 1
1.1 系统间通信技术介绍 1
1.2 为何要用消息队列 2
1.3 消息队列的功能特点 6
1.4 设计一个简单的消息队列 8
1.4.1 消息处理中心 9
1.4.2 客户端访问 12
第2章 消息协议 16
2.1 AMQP 17
2.2 MQTT 22
2.3 STOMP 31
2.4 XMPP 37
2.5 JMS 48
第3章 RabbitMQ 59
3.1 简介 59
3.2 工程实例 63
3.2.1 Java访问RabbitMQ实例 63
3.2.2 Spring整合RabbitMQ 67
3.2.3 基于RabbitMQ的异步处理 69
3.2.4 基于RabbitMQ的消息推送 75
3.3 RabbitMQ实践建议 80
3.3.1 虚拟主机 80
3.3.2 消息保存 81
3.3.3 消息确认模式 83
3.3.4 消费者应答 84
3.3.5 流控机制 87
3.3.6 通道 88
3.3.7 总结 88
第4章 ActiveMQ 89
4.1 简介 89
4.2 工程实例 95
4.2.1 Java访问ActiveMQ实例 95
4.2.2 Spring整合ActiveMQ 100
4.2.3 基于ActiveMQ的消息推送 108
4.2.4 基于ActiveMQ的分布式事务 113
4.3 ActiveMQ实践建议 136
4.3.1 消息转发模式 136
4.3.2 消息积压 137
4.3.3 消息事务 139
4.3.4 消息应答模式 140
4.3.5 消息发送优化 141
4.3.6 消息消费优化 142
4.3.7 消息协议 145
4.3.8 消息持久化 147
第5章 Kafka 148
5.1 简介 148
5.2 工程实例 150
5.2.1 Java访问Kafka实例 150
5.2.2 Spring整合Kafka 154
5.2.3 基于Kafka的用户行为数据采集 158
5.2.4 基于Kafka的日志收集 174
5.2.5 基于Kafka 的流量削峰 177
5.3 Kafka实践建议 191
5.3.1 分区 191
5.3.2 复制 192
5.3.3 消息发送 193
5.3.4 消费者组 196
5.3.5 消费偏移量 197
第6章 RocketMQ 201
6.1 简介 201
6.2 工程实例 206
6.2.1 Java访问RocketMQ实例 206
6.2.2 Spring整合RocketMQ 211
6.2.3 基于RocketMQ的消息顺序处理 219
6.2.4 基于RocketMQ的分布式事务 234
6.3 RocketMQ实践建议 261
6.3.1 消息重试 261
6.3.2 消息重复 264
6.3.3 集群 266
6.3.4 顺序消息 270
6.3.5 定时消息 270
6.3.6 批量发送消息 271
6.3.7 事务消息 274