深入RABBITMQ

本书特色

[

本书对 RabbitMQ 这一业界主流的消息中间件做了全面介绍,给出了如何使用 RabbitMQ 构建消息通信系统的方法和实践。本书从 AMQP 协议出发,深入介绍各种消息属性,给出 RabbitMQ 在发送和消费消息上的特性和*实践,并阐述基于 RabbitMQ 所特有的交换器组件实现灵活的消息路由机制。同时,本书也讨论了如何利用 RabbitMQ 强大的集群机制实现分布式环境下的消息通信,并展示了如何在 RabbitMQ中,使用其他传输协议以及数据库集成等功能来实现各种定制化需求。本书的读者对象为从事互联网行业中各种分布式和服务化系统开发的研究人员、高等院校计算机相关专业的研究生和本科生,以及广大的 IT 爱好者。

]

内容简介

[

本书对 RabbitMQ 这一业界主流的消息中间件做了全面介绍,给出了如何使用 RabbitMQ 构建消息通信系统的方法和实践。本书从 AMQP 协议出发,深入介绍各种消息属性,给出 RabbitMQ 在发送和消费消息上的特性和很好实践,并阐述基于 RabbitMQ 所特有的交换器组件实现灵活的消息路由机制。同时,本书也讨论了如何利用 RabbitMQ 强大的集群机制实现分布式环境下的消息通信,并展示了如何在 RabbitMQ中,使用其他传输协议以及数据库集成等功能来实现各种定制化需求。本书的读者对象为从事互联网行业中各种分布式和服务化系统开发的研究人员、高等院校计算机相关专业的研究生和本科生,以及广大的 IT 爱好者。

]

作者简介

[

Gavin M. Ray是一位积极主动的开源传播者和倡导者,自20世纪90年代中期以来一直从事互联网和企业技术方面的工作。技术编辑james Titcumb是一个自由开发者、培训师、演讲者,并且是开源项目积极贡献者。
汪佳南,拥有10年以上软件开发经验。对编程情有独钟,对产品设计很感兴趣,始终坚信技术可以改变世界。译有《RabbitMQ实战 高效部署分布式消息队列 》《深入理解 Redis》等知名图书。

]

目录

目 录**篇 RabbitMQ和应用程序体系结构第1章 RabbitMQ基础 …………………………………………………………………31.1 RabbitMQ特性以及好处 ……………………………………………………………………………. 41.1.1 RabbitMQ与Erlang …………………………………………………………….. 51.1.2 RabbitMQ与AMQP ……………………………………………………………………. 61.2 谁在使用RabbitMQ,在怎么用 …………………………………………………………….. 71.3 松耦合架构的优势 ……………………………………………………………………………………. 81.3.1 解耦你的应用 ……………………………………………….. 101.3.2 解耦数据库写入 ………………………………………………………………111.3.3 无缝添加新功能 ……………………………………………………………………. 121.3.4 复制数据与事件 …………………………………………………………….. 121.3.5 多主(Multi-Master)互联化数据与事件 ………………………………….. 131.3.6 高级消息队列模型 …………………………………………………………………. 141.4 小结 ……………………………………………………………………………………. 16第2章 使用AMQ协议与Rabbit进行交互 ………………………………………….182.1 AMQP作为一种RPC传输机制 ……………………………………………………………. 192.1.1 启动会话 …………………………………………………………………………………. 202.1.2 调整正确的信道 …………………………………………………………………. 202.2 AMQP RPC帧结构 ……………………………………………………………. 212.2.1 AMQP帧组件 ………………………………………………………………….. 212.2.2 帧类型 ………………………………………………………………………. 222.2.3 将消息编组成帧 ………………………………………………………….. 232.2.4 方法帧结构 …………………………………………………………………………. 242.2.5 内容头帧 ………………………………………………………………………………. 262.2.6 消息体帧 ………………………………………………………………………….. 262.3 使用协议 ………………………………………………………………………………….. 272.3.1 声明交换器 ………………………………………………………………………………… 272.3.2 声明队列 ………………………………………………………………………… 282.3.3 绑定队列到交换器 ………………………………………………………………………………….. 292.3.4 发布消息到RabbitMQ ……………………………………………………………………………… 292.3.5 从RabbitMQ中消费消息 ………………………………………………………………………….. 302.4 用Python编写消息发布者 ………………………………………………………………… 322.5 从RabbitMQ中获取消息 …………………………………………………………………… 362.6 小结 ………………………………………………………………………………………….. 37第3章 消息属性详解 …………………………………………………………………383.1 合理使用属性 …………………………………………………………………………………… 393.2 使用content-type属性创建显式的消息契约 …………………………………………………. 413.3 通过gzip和content-encoding属性压缩消息大小 ………………………………………….. 433.4 使用message-id和correlation-id引用消息 …………………………………………….. 453.4.1 Message-id………………………………………………………………………………………….. 453.4.2 Correlation-id………………………………………………………………………………….. 453.5 创建时间:timestamp属性 ………………………………………………………………………. 463.6 消息自动过期 …………………………………………………………………………. 473.7 使用delivery-mode平衡速度和安全性 ………………………………………………………….. 483.8 使用app-id和user-id验证消息来源 ……………………………………………………………… 493.8.1 app-id…………………………………………………………………………………………………… 503.8.2 user-id…………………………………………………………………………………………………. 513.9 使用type属性获取明细 ………………………………………………………………….. 513.10 使用reply-to属性实现动态工作流 ……………………………………………….. 523.11 使用消息头自定义属性 ……………………………………………………………….. 533.12 优先级属性 ……………………………………………………………………………. 543.13 不能使用的属性:cluster-id/reserved …………………………………………………… 543.14 小结 …………………………………………………………….. 55第4章 消息发布的性能权衡 ………………………………………………….584.1 平衡投递速度与可靠投递 ……………………………………………………………….. 594.1.1 如果没有保证机制我们能期待什么 …………………………………………………………. 604.1.2 使用mandatory设置,RabbitMQ将不接受不可路由消息 …………………………. 624.1.3 发布者确认作为事务的轻量级替代方法 ………………………………………………….. 644.1.4 使用备用交换器处理无法路由的消息 ……………………………………………………… 664.1.5 基于事务的批量处理 ………………………………………………………………………………. 684.1.6 使用HA队列避免节点故障 ………………………………………………………………………. 704.1.7  HA队列与事务 ………………………………………………………………… 724.1.8 通过设置delivery-mode为2将消息持久化到磁盘 ……………………………….. 724.2 RabbitMQ回推 …………………………………………………………………………….. 754.2.1 使用rabbitpy来检测连接状态 …………………………………………………………………… 774.2.2 使用管理API管理连接状态 ……………………………………………………………………… 774.3 小结 ……………………………………………………………………………………………… 78第5章 消费消息,避免拉取 ……………………………………………………..795.1 对比Basic.Get 和Basic.Consume ……………………………………………………………… 805.1.1 Basic.Get ……………………………………………………………………………………………. 805.1.2 Basic.Consume …………………………………………………………………………………… 825.2 优化消费者性能 ……………………………………………………………………………….. 845.2.1 使用no-ack模式实现更快的吞吐量 ……………………………………………………….. 855.2.2 通过服务质量设置控制消费者预取 …………………………………………………………. 86
5.2.3 消费者使用事务 ………………………………………………………………….. 89
5.3 拒绝消息 ………………………………………………………………………………………… 90
5.3.1 Basic.Reject………………………………………………………………………………………. 90
5.3.2 Basic.Nack………………………………………………………………………………………….. 91
5.3.3 死信交换器 …………………………………………………………………. 92
5.4 控制队列 ……………………………………………………………………………………. 94
5.4.1 临时队列 ………………………………………………………………………………. 94
5.4.2  永久队列 ………………………………………………………………………………… 97
5.4.3 任意队列设置 ………………………………………………………………… 99
5.5 小结 ……………………………………………………………………………………… 99
第6章 消息路由模式 ……………………………………………………………101
6.1 通过direct交换器路由消息 ………………………………………………………………….. 102
6.1.1 创建应用架构 ………………………………………………………. 103
6.1.2 创建RPC工作者 ………………………………………………………………… 107
6.1.3 编写简单的RPC发布者 …………………………………………………………………………..110
6.2 通过fanout交换器广播消息 …………………………………………………………….115
6.2.1 修改面部检测消费者 ………………………………………………………………………………116
6.2.2 创建一个简单的图片哈希消费者 …………………………………………………………….117
6.3 使用topic交换器有选择地路由消息 ………………………………………………………119
6.4 使用headers交换器有选择地路由消息………………………………………………… 122
6.5 交换器性能基准 ………………………………………………………… 124
6.6 交换器间路由 …………………………………………………………………………….. 125
6.7 使用一致性哈希交换器路由消息 ………………………………………………….. 127
6.8 小结 …………………………………………………………………………………………… 131
第二篇 管理数据中心或云中的RabbitMQ
第7章 RabbitMQ集群 ……………………………………………………….135
7.1 集群简介 ……………………………………………………………………………………….. 136
7.1.1 集群和管理界面 ………………………………………………………………… 137
7.1.2 集群节点类型 …………………………………………………………………………… 138
7.1.3 集群和队列行为 ……………………………………………………………………… 139
7.2 集群设置 …………………………………………………………………………….. 142
7.2.1 虚拟机设置 …………………………………………………………………. 143
7.2.2 向集群中添加节点 ………………………………………………………. 144
7.3 小结 …………………………………………………………………………………………… 147
第8章 跨集群的消息分发 …………………………………………………..148
8.1 联合交换器和联合队列 ……………………………………………………………… 149
8.1.1 联合交换器 ………………………………………………………………….. 149
8.1.2 联合队列 …………………………………………………………………………………… 152
8.2 创建RabbitMQ虚拟机 …………………………………………………………………….. 153
8.2.1 创建首个实例 ……………………………………………………………………….. 153
8.2.2 复制EC2实例 ……………………………………………………………………………. 159
8.3 连接上游节点 ………………………………………………………………………………………… 162
8.3.1 定义联合中的上游节点 …………………………………………………………………………. 162
8.3.2 定义策略 ……………………………………………………………………… 164
8.3.3 利用上游集合 ………………………………………………………………………… 167
8.3.4 双向联合交换器 …………………………………………………………………… 170
8.3.5 使用联合来升级集群 …………………………………………………………… 171
8.4 小结 ………………………………………………………………………………………… 173
第三篇 集成与定制第9章 使用替代协议 ……………………………………………………177
9.1 MQTT和RabbitMQ ………………………………………………………………………. 178
9.1.1 MQTT协议 ………………………………………………………………………… 178
9.1.2 通过MQTT发送消息 ……………………………………………………………………………… 182
9.1.3 MQTT订阅者 …………………………………………………………………… 184
9.1.4 MQTT插件配置 ……………………………………………………………….. 187
9.2 STOMP和RabbitMQ ………………………………………………………………….. 189
9.2.1 STOMP协议 ……………………………………………………………………. 190
9.2.2 发布消息 ……………………………………………………………………… 191
9.2.3 消费消息 ……………………………………………………………………………… 195
9.2.4 配置STOMP插件 ……………………………………………………………………. 198
9.2.5 在Web浏览器中使用STOMP ………………………………………………………………….. 199
9.3  通过HTTP进行无状态发布 ………………………………………………………. 200
9.3.1 statelessd的由来 …………………………………………………………. 200
9.3.2 使用statelessd ………………………………………………………………….. 201
9.3.3 运营架构 …………………………………………………………………….. 202
9.3.4 通过statelessd来发布消息 ……………………………………………………. 203
9.4 小结 ………………………………………………………………………………………………… 203
第10章 数据库集成 ………………………………………………………………..205
10.1 PostgreSQL扩展:pg_amqp ……………………………………………………….. 206
10.1.1 安装pg_amqp扩展……………………………………………………………………….. 207
10.1.2 配置pg_amqp扩展……………………………………………………………………….. 209
10.1.3 通过pg_amqp发送消息…………………………………………………………………………. 210
10.2 监听PostgreSQL通知……………………………………………………………………………… 212
10.2.1 安装PostgreSQL LISTEN交换器 …………………………………………………….. 213
10.2.2 基于策略的配置 ……………………………………………………………….. 215
10.2.3 创建交换器 ………………………………………………………………………. 217
10.2.4 创建并绑定测试队列 …………………………………………………………………………… 217
10.2.5 通过NOTIFY发送消息 …………………………………………………………………………. 218
10.3 将消息存入InfluxDB中 …………………………………………………………………….. 219
10.3.1 InfluxDB的安装与设置 ………………………………………………………………………… 220
10.3.2 安装InfluxDB存储交换器 …………………………………………………………………….. 222
10.3.3 创建测试交换器 ………………………………………………………………. 223
10.3.4 测试交换器 ……………………………………………………………………………… 224
10.4 小结 …………………………………………………………………………………………… 227
附录 准备就绪 ……………………………………………………………..228
A.1 安装VirtualBox ……………………………………………………………………………………………….. 228
A.2 安装Vagrant ………………………………………………………………………………………. 230
A.3 设置Vagrant虚拟机 …………………………………………………………………. 233
A.4 确认安装 ………………………………………………………………………………………. 234
A.5 小结 ……………………………………………………………………………………………. 236

封面

深入RABBITMQ

书名:深入RABBITMQ

作者:(美)Gavin M. Roy(加文·罗

页数:252

定价:¥79.0

出版社:电子工业出版社

出版日期:2017-06-01

ISBN:9787121341809

PDF电子书大小:132MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注