内容简介
· · · · · ·
《RabbitMQ实战指南》从消息中间件的概念和RabbitMQ的历史切入,主要阐述RabbitMQ的安装、使用、配置、管理、运维、原理、扩展等方面的细节。《RabbitMQ实战指南》大致可以分为基础篇、进阶篇和高阶篇三个部分。基础篇首先介绍RabbitMQ的基本安装及使用方式,方便零基础的读者以最舒适的方式融入到RabbitMQ之中。其次介绍RabbitMQ的基本概念,包括生产者、消费者、交换器、队列、绑定等。之后通过Java语言讲述了客户端如何与RabbitMQ建立(关闭)连接、声明(删除)交换器、队列、绑定关系,以及如何发送和消费消息等。进阶篇讲述RabbitMQ的TTL、死信、延迟队列、优先级队列、RPC、消息持久化、生产端和消费端的消息确认机制等内容,以期读者能够掌握RabbitMQ的使用精髓。《RabbitMQ实战指南》中间篇幅主要从RabbitMQ的管理、配置、运维这三个角度来为读者提供帮助文档及解决问题的思路。高阶篇主要阐述RabbitMQ的存储机制、流控及镜像队列的原理,深入地讲述RabbitMQ的一些实现细节,便于读者加深对RabbitMQ的理解。《RabbitMQ实战指南》还涉及网络分区的概念,此内容可称为魔鬼篇,需要掌握前面的所有内容才可理解其中的门道。《RabbitMQ实战指南》最后讲述的是RabbitMQ的一些扩展内容及附录,供读者参考之用。
作者简介
· · · · · ·
计算机硕士毕业,在互联网公司担任高级开发工程师,从事消息中间件的研究及开发,主要包括RabbitMQ和Kafka。
目录
· · · · · ·
第1章 RabbitMQ简介
1.1 什么是消息中间件
1.2 消息中间件的作用
1.3 RabbitMQ的起源
1.4 RabbitMQ的安装及简单使用
1.4.1 安装Erlang
1.4.2 RabbitMQ的安装
1.4.3 RabbitMQ的运行
1.4.4 生产和消费消息
1.5 小结
第2章 RabbitMQ入门
2.1 相关概念介绍
2.1.1 生产者和消费者
2.1.2 队列
2.1.3 交换器、路由键、绑定
2.1.4 交换器类型
2.1.5 RabbitMQ运转流程
2.2 AMQP协议介绍
2.2.1 AMQP生产者流转过程
2.2.2 AMQP消费者流转过程
2.2.3 AMQP命令概览
2.3 小结
第3章 客户端开发向导
3.1 连接RabbitMQ
3.2 使用交换器和队列
3.2.1 exchangeDeclare方法详解
3.2.2 queueDeclare方法详解
3.2.3 queueBind方法详解
3.2.4 exchangeBind方法详解
3.2.5 何时创建
3.3 发送消息
3.4 消费消息
3.4.1 推模式
3.4.2 拉模式
3.5 消费端的确认与拒绝
3.6 关闭连接
3.7 小结
第4章 RabbitMQ进阶
4.1 消息何去何从
4.1.1 mandatory参数
4.1.2 immediate参数
4.1.3 备份交换器
4.2 过期时间(TTL)
4.2.1 设置消息的TTL
4.2.2 设置队列的TTL
4.3 死信队列
4.4 延迟队列
4.5 优先级队列
4.6 RPC实现
4.7 持久化
4.8 生产者确认
4.8.1 事务机制
4.8.2 发送方确认机制
4.9 消费端要点介绍
4.9.1 消息分发
4.9.2 消息顺序性
4.9.3 弃用QueueingConsumer
4.10 消息传输保障
4.11 小结
第5章 RabbitMQ管理
5.1 多租户与权限
5.2 用户管理
5.3 Web端管理
5.4 应用与集群管理
5.4.1 应用管理
5.4.2 集群管理
5.5 服务端状态
5.6 HTTP API接口管理
5.7 小结
第6章 RabbitMQ配置
6.1 环境变量
6.2 配置文件
6.2.1 配置项
6.2.2 配置加密
6.2.3 优化网络配置
6.3 参数及策略
6.4 小结
第7章 RabbitMQ运维
7.1 集群搭建
7.1.1 多机多节点配置
7.1.2 集群节点类型
7.1.3 剔除单个节点
7.1.4 集群节点的升级
7.1.5 单机多节点配置
7.2 查看服务日志
7.3 单节点故障恢复
7.4 集群迁移
7.4.1 元数据重建
7.4.2 数据迁移和客户端连接的切换
7.4.3 自动化迁移
7.5 集群监控
7.5.1 通过HTTP API接口提供监控数据
7.5.2 通过客户端提供监控数据
7.5.3 检测RabbitMQ服务是否健康
7.5.4 元数据管理与监控
7.6 小结
第8章 跨越集群的界限
8.1 Federation
8.1.1 联邦交换器
8.1.2 联邦队列
8.1.3 Federation的使用
8.2 Shovel
8.2.1 Shovel的原理
8.2.2 Shovel的使用
8.2.3 案例:消息堆积的治理
8.3 小结
第9章 RabbitMQ高阶
9.1 存储机制
9.1.1 队列的结构
9.1.2 惰性队列
9.2 内存及磁盘告警
9.2.1 内存告警
9.2.2 磁盘告警
9.3 流控
9.3.1 流控的原理
9.3.2 案例:打破队列的瓶颈
9.4 镜像队列
9.5 小结
第10章 网络分区
10.1 网络分区的意义
10.2 网络分区的判定
10.3 网络分区的模拟
10.4 网络分区的影响
10.4.1 未配置镜像
10.4.2 已配置镜像
10.5 手动处理网络分区
10.6 自动处理网络分区
10.6.1 pause-minority模式
10.6.2 pause-if-all-down模式
10.6.3 autoheal模式
10.6.4 挑选哪种模式
10.7 案例:多分区情形
10.8 小结
第11章 RabbitMQ扩展
11.1 消息追踪
11.1.1 Firehose
11.1.2 rabbitmq_tracing插件
11.1.3 案例:可靠性检测
11.2 负载均衡
11.2.1 客户端内部实现负载均衡
11.2.2 使用HAProxy实现负载均衡
11.2.3 使用Keepalived实现高可靠负载均衡
11.2.4 使用Keepalived+LVS实现负载均衡
11.3 小结
附录A 集群元数据信息示例
附录B /api/nodes接口详细内容
附录C 网络分区图谱
· · · · · ·