本书从消息中间件的概念和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。同时也要感谢我身边的同事,正因为有了你们的鼓励和帮助,才让我能够迅速成长,本书的问世,离不开与你们在工作中积累的点点滴滴。
感谢在我博客中提问、留言的网友,有了你们的意见和建议才能让本书更加完善。
感谢博文视点的编辑们,本书能够顺利、迅速地出版,多亏了你们的敬业精神和一丝不苟的工作态度。
最后还要感谢我的家人,在我占用绝大部分的业余时间进行写作的时候,能够给予我极大的宽容、理解和支持,让我能够全身心地投入到写作之中。
朱忠华
AMQP 0-9-1写错了,写成AQMP0-9-1了
客户端在连接的时候必须制定一个vhost
制定 应该为 指定
=============之前的错误还在==============
页码:93 • 行数:9 • 印次: 4
客户端在连接的时候必须制定一个vhost
制定 应该为 指定
icycode 提交于 2018/10/3 14:15:38