标签
内容简介
《深入RabbitMQ》是 Manning 出版社《RabbitMQ in Depth》的简体中文译本,面向已经对面向消息的系统有初步了解的开发者,系统讲解 RabbitMQ 这一主流消息代理服务器的工作机制与工程实践。全书由三部分组成。第一篇「RabbitMQ 和应用程序体系结构」从 RabbitMQ 与 Erlang、AMQP 协议的关系讲起,说明它在松耦合架构中的价值;随后剖析 AMQP 作为一种 RPC 传输机制的帧结构,用 Python 编写发布者与消费者示例;接着逐个拆解消息属性——content-type 与消息契约、用 gzip 与 content-encoding 压缩消息体、message-id 与 correlation-id 关联请求响应、timestamp、消息过期、delivery-mode 在速度与持久化之间的取舍、app-id 与 user-id、type、reply-to、自定义消息头以及优先级等;再讨论消息发布的性能权衡与回推(back pressure),以及为何应当「消费消息而不是拉取消息」,包括 Basic.Consume 与 Basic.Get 的对比、消费者性能优化、消息拒绝与队列控制;最后围绕 direct、fanout、topic、headers 以及一致性哈希交换器展开消息路由模式和性能基准。第二篇讨论集群与跨集群分发,包括集群搭建、联合交换器与联合队列、连接上游节点,用于在多数据中心或云环境中做消息分发。第三篇讲集成与定制,介绍用 MQTT、STOMP 和 HTTP 与 RabbitMQ 通信,以及通过 pg_amqp、监听 PostgreSQL 通知、写入 InfluxDB 等方式实现数据库集成。书末附有基于 VirtualBox 与 Vagrant 的环境搭建附录,方便读者亲手复现书中示例。
编辑推荐
市面上讲 RabbitMQ 的中文书不少,但大多数停留在「怎么装、怎么发消息」的操作层面;这本书的独特之处在于它一直在回答「为什么」。作者 Gavin M. Roy 是长期活跃在开源社区的技术人,他从 AMQP 协议的帧结构讲起,把一个消息从生产者发出、经过交换器路由、到被消费者确认的完整链路拆开给你看,读完再看配置文件里的参数,会明白每个参数背后在权衡什么。全书三个部分层层递进:第一部分打牢协议与消息属性、发布消费、路由模式的基本功,其中关于 delivery-mode、消息过期、back pressure 回推、Basic.Get 与 Basic.Consume 取舍的讨论尤其值得反复咀嚼;第二部分讲集群与跨集群联合,正好对应多机房、混合云这类真实场景;第三部分用 MQTT、STOMP、HTTP 和数据库集成展示 RabbitMQ 作为「消息枢纽」的延展性。示例代码用 Python 编写,不绑定某一门语言的框架,Java、Go、Node.js 的使用者都能顺畅迁移。译者汪佳南、郑天民分工合译,术语统一、行文准确。需要提醒的是,原书英文版出版于 2017 年,中文版 2018 年上市,RabbitMQ 在这几年间版本迭代较快(如仲裁队列等新特性),读时宜对照官方最新文档,把书中原理作为理解框架,具体配置项以现行版本文档为准。
适合谁读
适合
- 已经会用 RabbitMQ 收发消息,想弄清 AMQP 协议与内部机制的后端开发者
- 正在设计微服务或分布式系统、需要选型消息中间件的架构师
- 负责 RabbitMQ 部署与排障,希望系统掌握集群与跨机房方案的运维人员
- 计算机相关专业研究生、本科生,作为消息中间件课程或项目的参考读物
不适合
- 完全没接触过消息队列、需要手把手入门的零基础读者
- 只想找一本与当前 RabbitMQ 最新版本配置项严格对应的速查手册的人
- 不写代码、只关心业务产品设计的产品与运营人员
阅读建议
- 先读第 1、2 章建立 AMQP 协议与帧结构的整体印象,再进入消息属性章节,避免被细节淹没。
- 把附录的环境搭建做一遍,用 Vagrant 起本地集群,边读边跑第 3 至 6 章的示例,效果远胜纯阅读。
- 第 3 章的消息属性建议做成自己的速查表,与项目里实际使用的属性逐条对照。
- 书中版本较早,读到集群、流控相关内容时同步查阅 RabbitMQ 官方文档,标注差异再落地。
出版社简介
电子工业出版社
中国 · 成立于 1982 年
电子工业出版社是一家以电子信息及相关领域为出版特色的综合性出版社。从库内三千余种图书来看,其出版方向覆盖编程设计、人工智能、计算机综合、财经、摄影与社科等门类,既关注技术前沿,也兼顾大众阅读。代表图书包括《因子投资:方法与实践》《x86汇编语言:从实模式到保护模式》《RISC-V开放架构设计之道》《人工智能:语音识别理解与实践》《相控阵雷达技术》《雷达目标特性》及《100个Go语言典型错误》等,多围绕技术方法与工程实践展开。作者资源方面,有石川、李忠、王晓波、大卫·帕特森、安德鲁·沃特曼、余子濠等中外作者。受公开资料所限,暂不展开更多出版特色。
目录
- 译者序
- 序言
- 致谢
- 关于本书
- 第一篇 RabbitMQ和应用程序体系结构
- 第1章 RabbitMQ基础
- 1.1 RabbitMQ特性以及好处
- 1.2 谁在使用RabbitMQ,在怎么用
- 1.3 松耦合架构的优势
- 1.4 小结
- 第2章 使用AMQ协议与Rabbit进行交互
- 2.1 AMQP作为一种RPC传输机制
- 2.2 AMQP RPC帧结构
- 2.3 使用协议
- 2.4 用Python编写消息发布者
- 2.5 从RabbitMQ中获取消息
- 2.6 小结
- 第3章 消息属性详解
- 3.1 合理使用属性
- 3.2 使用content-type属性创建显式的消息契约
- 3.3 通过gzip和content-encoding属性压缩消息大小
- 3.4 使用message-id和correlation-id引用消息
- 3.5 创建时间:timestamp属性
- 3.6 消息自动过期
- 3.7 使用delivery-mode平衡速度和安全性
- 3.8 使用app-id和user-id验证消息来源
- 3.9 使用type属性获取明细
- 3.10 使用reply-to属性实现动态工作流
- 3.11 使用消息头自定义属性
- 3.12 优先级属性
- 3.13 不能使用的属性:cluster-id/reserved
- 3.14 小结
- 第4章 消息发布的性能权衡
- 4.1 平衡投递速度与可靠投递
- 4.2 RabbitMQ回推
- 4.3 小结
- 第5章 消费消息,避免拉取
- 5.1 对比Basic.Get和Basic.Consume
- 5.2 优化消费者性能
- 5.3 拒绝消息
常见问题
这本书和《RabbitMQ实战指南》有什么区别?
《RabbitMQ实战指南》是国人撰写,偏重安装、配置、运维与原理的中文原创书;《深入RabbitMQ》是 Manning《RabbitMQ in Depth》的译本,更强调协议层面的「为什么」,从 AMQP 帧、消息属性到路由与集群逐层展开,适合作为理解机制的补充读物。
零基础能直接读这本书吗?
不太建议。原书在前言中说明面向「对面向消息的系统有基本了解的程序员」。如果没有用过消息队列,建议先用官方教程跑通发布与消费,再回来读本书,否则第 2 章的帧结构和第 3 章的消息属性会相当吃力。
书里的例子用什么语言写?
主要使用 Python 编写发布者与消费者示例,并展示如何通过 AMQP 客户端库与 RabbitMQ 交互。由于重点是协议与机制而非框架,Java、Go、Node.js 等语言的开发者可以较容易地把示例迁移到自己的技术栈。
内容是否已经过时?
英文原版出版于 2017 年、中文版 2018 年,AMQP 协议模型、交换器类型、消息属性等原理性内容依然成立;但 RabbitMQ 后续版本新增的仲裁队列、流等特性书中没有覆盖,配置细节需以官方最新文档为准。
书里讲的集群方案适用于多机房吗?
第二篇专门讨论跨集群消息分发,介绍联合交换器(federation exchange)、联合队列以及连接上游节点的做法,正是为多数据中心或云环境准备的。不过具体部署仍需结合自身网络延迟与运维条件评估。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。