RabbitMQ实战指南
  • 推荐2
  • 收藏6
  • 浏览3.2K

RabbitMQ实战指南

朱忠华 (作者) 

  • 书  号:978-7-121-32991-3
  • 出版日期:2017-11-24
  • 页  数:348
  • 开  本:16(185*235)
  • 出版状态:上市销售
纸质版 ¥79.00
本书从消息中间件的概念和RabbitMQ的历史切入,主要阐述RabbitMQ的安装、使用、配置、管理、运维、原理、扩展等方面的细节。本书大致可以分为基础篇、进阶篇和高阶篇三个部分。基础篇首先介绍RabbitMQ的基本安装及使用方式,方便零基础的读者以最舒适的方式融入到RabbitMQ之中。其次介绍RabbitMQ的基本概念,包括生产者、消费者、交换器、队列、绑定等。之后通过Java语言讲述了客户端如何与RabbitMQ建立(关闭)连接、声明(删除)交换器、队列、绑定关系,以及如何发送和消费消息等。进阶篇讲述RabbitMQ的 TTL、死信、延迟队列、优先级队列、RPC、消息持久化、生产端和消费端的消息确认机制等内容,以期读者能够掌握RabbitMQ的使用精髓。本书中间篇幅主要从RabbitMQ 的管理、配置、运维这三个角度来为读者提供帮助文档及解决问题的思路。高阶篇主要阐述RabbitMQ的存储机制、流控及镜像队列的原理,深入地讲述RabbitMQ的一些实现细节,便于读者加深对RabbitMQ的理解。本书还涉及网络分区的概念,此内容可称为魔鬼篇,需要掌握前面的所有内容才可理解其中的门道。本书最后讲述的是RabbitMQ的一些扩展内容及附录,供读者参考之用。
细致分析RabbitMQ的方方面面。
由浅入深,全面掌握RabbitMQ各个技术要点。
初识RabbitMQ时,我在网上搜寻了大量的相关资料以求自己能够快速地理解它,但是这些资料零零散散而又良莠不齐。后来又寄希望于RabbitMQ的相关书籍,或许是它们都非出自国人之手,里面的陈述逻辑和案例描述都不太符合我自己的思维习惯。最后选择从头开始自研RabbitMQ,包括阅读相关源码、翻阅官网的资料以及进行大量的实验等。
平时我也有写博客的习惯,通常在工作中遇到问题时会结合所学的知识整理成文。随着一篇篇的积累,也有好几十篇的内容,渐渐地也就有了编撰成书的想法。
本书动笔之时我曾信心满满,以为能够顺其自然地完成这本书,但是写到四分之一时,发现并没有想象中的那么简单。怎样才能让理解领悟汇聚成通俗易懂的文字表达?怎样才能让书中内容前后贯通、由浅入深地阐述?有些时候可能知道怎样做、为什么这么做,而没有反思其他情形能不能做、怎样做。为了解决这些问题,我会反复对书中的内容进行迭代,对某些模糊的知识点深耕再深耕,对某些案例场景进行反复的测试,不断地完善。
在本书编写之时,我常常回想当初作为小白之时迫切地希望能够了解哪些内容,这些内容又希望以怎样的形式展现。所以本书前面几章的内容基本上是站在一个小白的视角来为读者做一个细腻的讲解,相信读者在阅读完这些内容之后能够具备合理使用RabbitMQ的能力。在后面的章节中知识点会慢慢地深入,每阅读一章的内容都会对RabbitMQ有一个更加深刻的认知。
本书中的所有内容都具备理论基础并全部实践过,书中的内容也是我在工作中的实践积累,希望本书能够让初学者对RabbitMQ有一个全面的认知,也希望有相关经验的人士可以从本书中得到一些启发,汲取一些经验。
内容大纲
本书共11章,前后章节都有相关的联系,基本上按照由浅入深、由表及里的层次逐层进行讲解。如果读者对其中的某些内容已经掌握,可以选择跳过而翻阅后面的内容,不过还是建议读者按照先后顺序进行阅读。
第1章主要针对消息中间件做一个摘要性介绍,包括什么是消息中间件、消息中间件的作用及特点等。之后引入RabbitMQ,对其历史和相关特点做一个简要概述。本章最后介绍RabbitMQ的安装及生产、消费的使用示例。
第2章主要讲述RabbitMQ的入门知识,包括生产者、消费者、队列、交换器、路由键、绑定、连接及信道等基本术语。本章还阐述了RabbitMQ与AMQP协议的对应关系。
第3章主要介绍RabbitMQ客户端开发的简单使用,按照一个生命周期对连接、创建、生产、消费及关闭等几个方面进行宏观的介绍。
第4章介绍数据可靠性的一些细节,并展示RabbitMQ的几种已具备或衍生的高级特性,包括TTL、死信队列、延迟队列、优先级队列、RPC等,这些功能在实际使用中可以让某些应用的实现变得事半功倍。
第5章主要围绕RabbitMQ管理这个主题展开,包括多租户、权限、用户、应用和集群管理、服务端状态等方面,并且从侧面讲述rabbitmqctl工具和rabbitmq_management插件的使用。
第6章主要讲述RabbitMQ的配置,以此可以通过环境变量、配置文件、运行时参数(和策略)等三种方式来定制化相应的服务。
第7章主要围绕运维层面展开论述,主要包括集群搭建、日志查看、故障恢复、集群迁移、集群监控这几个方面。
第8章主要讲述Federation和Shovel这两个插件的使用、细节及相关原理。区别于第7章中集群的部署方式,Federation和Shovel可以部署在广域网中,为RabbitMQ提供更广泛的应用空间。
第9章介绍RabbitMQ相关的一些原理,主要内容包括RabbitMQ存储机制、磁盘和内存告警、流控机制、镜像队列。了解这些实现的细节及原理十分必要,它们可以让读者在遇到问题时能够透过现象看本质。
第10章主要围绕网络分区进行展开,具体阐述网络分区的意义,如何查看和处理网络分区,以及网络分区所带来的影响。
第11章主要探讨RabbitMQ的两个扩展内容:消息追踪及负载均衡。消息追踪可以有效地定位消息丢失的问题。负载均衡本身属于运维层面,但是负载均衡一般需要借助第三方的工具——HAProxy、LVS等实现,故本书将其视为扩展内容。
读者讨论
由于作者水平有限,书中难免有错误之处。在本书出版后的任何时间,若你对本书有任何的疑问,都可以通过 zhuzhonghua.ideal@qq.com 发送邮件给作者,也可以到作者的个人博客http://blog.csdn.net/u013256816留言,向作者阐述你的建议和想法。如若收到相关信息,作者都会回复。
致谢
首先要感谢我身处的平台,让我有机会深入地接触RabbitMQ。同时也要感谢我身边的同事,正因为有了你们的鼓励和帮助,才让我能够迅速成长,本书的问世,离不开与你们在工作中积累的点点滴滴。
感谢在我博客中提问、留言的网友,有了你们的意见和建议才能让本书更加完善。
感谢博文视点的编辑们,本书能够顺利、迅速地出版,多亏了你们的敬业精神和一丝不苟的工作态度。
最后还要感谢我的家人,在我占用绝大部分的业余时间进行写作的时候,能够给予我极大的宽容、理解和支持,让我能够全身心地投入到写作之中。
朱忠华

目录

第1章 RabbitMQ简介 1
1.1 什么是消息中间件 2
1.2 消息中间件的作用 3
1.3 RabbitMQ的起源 4
1.4 RabbitMQ的安装及简单使用 6
1.4.1 安装Erlang 7
1.4.2 RabbitMQ的安装 8
1.4.3 RabbitMQ的运行 8
1.4.4 生产和消费消息 10
1.5 小结 14
第2章 RabbitMQ入门 15
2.1 相关概念介绍 16
2.1.1 生产者和消费者 16
2.1.2 队列 18
2.1.3 交换器、路由键、绑定 19
2.1.4 交换器类型 21
2.1.5 RabbitMQ运转流程 23
2.2 AMQP协议介绍 26
2.2.1 AMQP生产者流转过程 27
2.2.2 AMQP消费者流转过程 29
2.2.3 AMQP命令概览 30
2.3 小结 32
第3章 客户端开发向导 33
3.1 连接RabbitMQ 34
3.2 使用交换器和队列 36
3.2.1 exchangeDeclare方法详解 37
3.2.2 queueDeclare方法详解 39
3.2.3 queueBind方法详解 41
3.2.4 exchangeBind方法详解 42
3.2.5 何时创建 43
3.3 发送消息 44
3.4 消费消息 46
3.4.1 推模式 46
3.4.2 拉模式 49
3.5 消费端的确认与拒绝 50
3.6 关闭连接 52
3.7 小结 54
第4章 RabbitMQ进阶 55
4.1 消息何去何从 56
4.1.1 mandatory参数 56
4.1.2 immediate参数 57
4.1.3 备份交换器 58
4.2 过期时间(TTL) 60
4.2.1 设置消息的TTL 60
4.2.2 设置队列的TTL 62
4.3 死信队列 63
4.4 延迟队列 65
4.5 优先级队列 67
4.6 RPC实现 68
4.7 持久化 72
4.8 生产者确认 74
4.8.1 事务机制 74
4.8.2 发送方确认机制 77
4.9 消费端要点介绍 84
4.9.1 消息分发 85
4.9.2 消息顺序性 87
4.9.3 弃用QueueingConsumer 88
4.10 消息传输保障 90
4.11 小结 91
第5章 RabbitMQ管理 92
5.1 多租户与权限 93
5.2 用户管理 97
5.3 Web端管理 99
5.4 应用与集群管理 105
5.4.1 应用管理 105
5.4.2 集群管理 108
5.5 服务端状态 111
5.6 HTTP API接口管理 121
5.7 小结 130
第6章 RabbitMQ配置 131
6.1 环境变量 132
6.2 配置文件 136
6.2.1 配置项 137
6.2.2 配置加密 140
6.2.3 优化网络配置 142
6.3 参数及策略 146
6.4 小结 151
第7章 RabbitMQ运维 152
7.1 集群搭建 153
7.1.1 多机多节点配置 154
7.1.2 集群节点类型 158
7.1.3 剔除单个节点 160
7.1.4 集群节点的升级 162
7.1.5 单机多节点配置 163
7.2 查看服务日志 164
7.3 单节点故障恢复 172
7.4 集群迁移 173
7.4.1 元数据重建 174
7.4.2 数据迁移和客户端连接的切换 183
7.4.3 自动化迁移 185
7.5 集群监控 189
7.5.1 通过HTTP API接口提供监控数据 189
7.5.2 通过客户端提供监控数据 196
7.5.3 检测RabbitMQ服务是否健康 199
7.5.4 元数据管理与监控 203
7.6 小结 205
第8章 跨越集群的界限 206
8.1 Federation 207
8.1.1 联邦交换器 207
8.1.2 联邦队列 214
8.1.3 Federation的使用 216
8.2 Shovel 223
8.2.1 Shovel的原理 224
8.2.2 Shovel的使用 227
8.2.3 案例:消息堆积的治理 233
8.3 小结 235
第9章 RabbitMQ高阶 237
9.1 存储机制 238
9.1.1 队列的结构 240
9.1.2 惰性队列 243
9.2 内存及磁盘告警 245
9.2.1 内存告警 246
9.2.2 磁盘告警 249
9.3 流控 250
9.3.1 流控的原理 250
9.3.2 案例:打破队列的瓶颈 253
9.4 镜像队列 263
9.5 小结 269
第10章 网络分区 270
10.1 网络分区的意义 271
10.2 网络分区的判定 272
10.3 网络分区的模拟 275
10.4 网络分区的影响 279
10.4.1 未配置镜像 279
10.4.2 已配置镜像 282
10.5 手动处理网络分区 284
10.6 自动处理网络分区 289
10.6.1 pause-minority模式 289
10.6.2 pause-if-all-down模式 290
10.6.3 autoheal模式 291
10.6.4 挑选哪种模式 292
10.7 案例:多分区情形 293
10.8 小结 296
第11章 RabbitMQ扩展 297
11.1 消息追踪 298
11.1.1 Firehose 298
11.1.2 rabbitmq_tracing插件 301
11.1.3 案例:可靠性检测 305
11.2 负载均衡 310
11.2.1 客户端内部实现负载均衡 312
11.2.2 使用HAProxy实现负载均衡 314
11.2.3 使用Keepalived实现高可靠负载均衡 318
11.2.4 使用Keepalived+LVS实现负载均衡 325
11.3 小结 330
附录A 集群元数据信息示例 331
附录B /api/nodes接口详细内容 333
附录C 网络分区图谱 336

本书勘误

印次
  • 页码:22页  •  行数:最后一行到23页第一行,两个都是#号  •  印次: 1

    yohoho 提交于 2018/3/11 19:15:33
    陈晓猛 确认于 2018/3/13 11:17:10
  • 页码:11  •  行数:倒数14  •  印次: 1

    yohoho 提交于 2018/3/11 19:42:02
    陈晓猛 确认于 2018/3/13 11:17:00
  • 页码:26  •  行数:最后一行  •  印次: 5

    AMQP 0-9-1写错了,写成AQMP0-9-1了具体错误照片

    fuchenggang 提交于 2019/4/24 10:08:22
    陈晓猛 确认于 2019/4/25 10:58:28
  • 页码:93  •  行数:9  •  印次: 4

    客户端在连接的时候必须制定一个vhost

    制定 应该为 指定

    icycode 提交于 2018/10/3 14:15:38
    陈晓猛 确认于 2018/10/8 14:51:54
  • 页码:93  •  行数:9  •  印次: 5

    =============之前的错误还在==============
    页码:93 • 行数:9 • 印次: 4

    客户端在连接的时候必须制定一个vhost

    制定 应该为 指定
    icycode 提交于 2018/10/3 14:15:38

    小岳叔叔 提交于 2019/3/26 15:28:12
    陈晓猛 确认于 2019/3/27 9:06:46

读者评论

  • 在“1.4小节 RabbitMQ的安装及简单使用”,有个密码写错了:

    添加新用户的时候,您写的是“添加新用户,用户名为“root”,密码为“root123”:”

    但书籍的代码中,写的密码却是root

    rabbitmqctl add_user root root
    Creating user "root"....
    

    正确的应该是 rabbitmqctl add_user root root123

    peterjxl发表于 2023/5/21 7:58:57
  • 书本的代码清单哪里下载呢?

    bactryki发表于 2019/2/15 15:53:49
    • 本书没有提供下载的代码

      陈晓猛发表于 2019/2/15 15:57:02
  • goodvery

    tsai fong-chung发表于 2018/12/2 20:17:21
    • 英文十级!

      陈晓猛发表于 2018/12/3 9:10:59
  • web权限问题

    shixin发表于 2018/8/10 16:40:47
    • 作者 您好 为什么monitor角色的用户 登录之后 不能看到 相关的连接 信道 等信息呢

      shixin发表于 2018/8/10 16:43:11

  • 这里应该是deliverTag+1吧,怎么能是-1呢??这里应该是把本身和它前面的数据删除。加一才对

    小白云天发表于 2018/6/23 16:24:45
    • 新批次已修正,多谢提醒。

      朱忠华发表于 2018/7/16 22:10:17

图书类别

相关博文

  • RabbitMQ进阶——消息何去何从

    RabbitMQ进阶——消息何去何从

    管理员账号 2017-12-28

    mandatory和immediate是channel.basicPublish方法中的两个参数,它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器(Alternate Exchange)...

    管理员账号 2017-12-28
    9536 0 0 0

推荐用户

相关图书

ATT&CK框架实践指南

过去,入侵检测能力的度量是个公认的行业难题,各个企业得安全负责人每年在入侵防护上都投入大量费用,但几乎没有人能回答CEO 的问题:“买了这么多产品,我们的入侵防...

¥148.00

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

深入理解Apache Dubbo与实战

诣极 林琳 (作者)

本书首先介绍Dubbo的简史、后续的规划和整体架构大图;接着介绍Dubbo环境配置,并基于Dubbo开发第一款应用程序;然后介绍Dubbo内置的常用注册中心的实...

¥79.00

Spring Boot 2精髓:从构建小系统到架构分布式大系统

李家智 (作者)

Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用。Spring ...

¥79.00

架构探险:从零开始写分布式服务框架

李业兵 李业兵 (作者)

分布式服务框架目前已经是互联网公司实现SOA服务化架构的必备基础设施,对于一般的开发而言,自己要独立实现一个分布式服务框架,还是有相当的难度的。本书围绕如何从零...

 

Apache Kafka源码剖析

徐郡明 (作者)

本书以 Kafka 0.10.0 版本源码为基础,针对 Kafka的架构设计到实现细节进行详细阐述。本书共5 章,从 Kafka 的应用场景、源码环境搭建开始逐...

¥89.00