《RabbitMQ实战指南》你看了吗?

RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件。首先要知道一些RabbitMQ的特点,官网可查:

  • 可靠性。支持持久化,传输确认,发布确认等保证了MQ的可靠性。
  • 灵活的分发消息策略。这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。
  • 支持集群。多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
  • 多种协议。RabbitMQ支持多种消息队列协议,比如 STOMP、MQTT 等等。
  • 支持多种语言客户端。RabbitMQ几乎支持所有常用编程语言,包括 Java、.NET、Ruby 等等。
  • 可视化管理界面。RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker。
  • 插件机制。RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。

RabbitMQ 是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用 RabbitMQ 凭借其高可靠、易扩展、高可用及丰富的功能特性受到越来越多企业的青睐。作为一个合格的开发者,有必要深入地了解 RabbitMQ 的相关知识,为自己的职业生涯添砖加瓦。

《RabbitMQ实战指南》你看了吗?_第1张图片

今天咱们就来一起学习一下连阿里架构师都在推荐渣渣们学习的《RabbitMQ实战指南》以及关于RabbitMQ面试官们最喜欢问的面试题和解答。

另外,前两天用XMind画了一张导图记录RabbitMQ的学习大纲,这里只能用图片的形式,不过源文件对个节点都有详细的解释,若是想下载源文件以及前面说的《RabbitMQ实战指南》面试解析笔记文末小卡片领取!

《RabbitMQ实战指南》你看了吗?_第2张图片

正式步入今天的主题《RabbitMQ实战指南》

共 有11 个章节,前后章节都有相关的联系,基本上按照由浅入深、由表及里的层次逐层进行讲解。如果读者对其中的某些内容已经掌握,可以选择跳过而翻阅后面的内容,不过还是建议读者按照先后顺序进行阅读。

《RabbitMQ实战指南》你看了吗?_第3张图片

  • 第 1 章 RabbitMQ 简介 :针对消息中间件做一个摘要性介绍,包括什么是消息中间件、消息中间件的作用及特点等。之后引入 RabbitMQ ,对其历史和相关特点做一个简要概述。本章最后介绍RabbitMQ 的安装及生产、消费的使用示例。
  • 第 2 章 RabbitMQ 入门 :讲述RabbitMQ的入门知识,包括生产者、消费者、队列、交换器、路由键、绑定、连接及信道等基本术语。本章还阐述了RabbitMQ与 AMQP 协议的对应关系。
  • 第 3 章 客户端开发向导 :介绍 RabbitMQ 客户端开发的简单使用,按照个生命周期对连接、创建、生产、消费及关闭等几个方面进行宏观的介绍。
  • 第 4 章 RabbitMQ 进阶 :介绍数据可靠性的 些细节,井展示 RabbitMQ 的几种己具备或衍生的高级特性,包括TTL、死信队列、延迟队列、优先级队列、 RPC 等,这些功能在实际使用中可以让某些应用的实现变得事半功倍。
  • 第 5 章 RabbitMQ 管理 :围绕 RabbitMQ 管理这个主题展开,包括多租户、权限、用户、应用和集群管理、服务端状态等方面,井且从侧面讲述 rabbitmqctl 工具和 rabbitmq_management 插件的使用。
  • 第 6 章 RabbitMQ 配置 :讲述 RabbitMQ 的配置,以此可以通过环境变量、配置文件、运行时参数(和策略)等三种方式来定制化相应的服务。
  • 第 7 章 RabbitMQ 运维 :围绕运维层面展开论述,主要包括集群搭建、日志查看、故障恢复、集群迁移、集群监控这几个方面。
  • 第 8 章 跨越集群的界限 :讲述 Federation Shovel 这两个插件的使用、细节及相关原理 区别于第7章中集群的部署方式, Federation Shovel 可以部署在广域网中,为RabbitMQ 提供更广泛的应用空间。
  • 第 9 章 RabbitMQ 高阶 :介绍 RabbitM 相关的一些原理,主要内容包括RabbitM 存储机制、磁盘和内存告警、流控机制、镜像队列。了解这些实现的细节及原理十分必要,它们可以让读者在遇到问题时能够透过现象看本质
  • 第 10 章 网络分区 :围绕网络分区进行展开,具体阐述网络分区的意义,如何查看和处理网络分区,以及网络分区所带来的影响。
  • 第 11 章 RabbitMQ 扩展 :探讨RabbitM 的两个扩展内容:消息追踪及负载均衡。消息追踪可以有效地定位消息丢失的问题。负载均衡本身属于运维层面,但是负载均衡一般需要借助第三方的工具-HAProxyLVS 等实现,故本书将其视为扩展内容。

《RabbitMQ实战指南》你看了吗?_第4张图片

RabbitMQ面试二十三连问

  • 问题一:RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
  • 问题二:什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?
  • 问题三:RAM node 和 disk node 的区别?
  • 问题四:RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?
  • 问题五:RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?
  • 问题六:vhost 是什么?起什么作用?
  • 问题七:在单 node 系统和多 node 构成的 cluster 系统中声明 queue、exchange ,以及进行 binding 会有什么不同?
  • 问题八:客户端连接到 cluster 中的任意 node 上是否都能正常工作?
  • 问题九:cluster 中 node 的失效会对 consumer 产生什么影响?若是在 cluster 中创建了mirrored queue ,这时 node 失效会对 consumer 产生什么影响?
  • 问题十:能够在地理上分开的不同数据中心使用 RabbitMQ cluster 么?
  • 问题十一:为什么 heavy RPC 的使用场景下不建议采用 disk node ?
  • 问题十二:向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行consume 动作会发生什么?
  • 问题十三:routing_key 和 binding_key 的最大长度是多少?
  • 问题十四:RabbitMQ 允许发送的 message 最大可达多大?
  • 问题十五:什么情况下 producer 不主动创建 queue 是安全的?
  • 问题十六:“dead letter”queue 的用途?
  • 问题十七:为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性,同时 message 具有 persistent 属性才行?
  • 问题十八:什么情况下会出现 blackholed 问题?
  • 问题十九:如何防止出现 blackholed 问题?
  • 问题二十:Consumer Cancellation Notification 机制用于什么场景?
  • 问题二十一:Basic.Reject 的用法是什么?
  • 问题二十二:为什么不应该对所有的 message 都使用持久化机制?
  • 问题二十三:RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?存在哪些问题?

《RabbitMQ实战指南》你看了吗?_第5张图片

篇幅有限,无论是上面的RabbitMQ二十三连问还是下面的Java高级面试解析之消息队列(面试官心里分析+面试题剖析)都没有把具体的解析答案附上,但是这些面试题及详细的解答小编都有整理成册!

Java高级面试解析之消息队列(面试官心里分析+面试题剖析)

  • 1.为什么使用消息队列 ?消息队列有什么优点和缺点?Kafka 、ActiveMQ 、RabbitMQ 、RocketMQ 都有什么优点和缺点?

《RabbitMQ实战指南》你看了吗?_第6张图片

《RabbitMQ实战指南》你看了吗?_第7张图片

  • 2. 如何保证消息队列的高可用?(RabbitMQ 的高可用性+Kafka 的高可用性)

《RabbitMQ实战指南》你看了吗?_第8张图片

  • 3. 如何保证消息不被重复消费 ?或者说 ,如何保证消息消费的幂等性 ?

《RabbitMQ实战指南》你看了吗?_第9张图片

  • 4. 如何保证消息的可靠性传输 ? 或者说 ,如何处理消息丢失的问题 ?

《RabbitMQ实战指南》你看了吗?_第10张图片

  • 5. 如何保证消息的顺序性 ?

《RabbitMQ实战指南》你看了吗?_第11张图片

  • 6. 如何解决消息队列的延时以及过期失效问题 ? 消息队列满了以后该怎么处理 ?有几百万消息 持续积压几小时 ,说说怎么解决 ?

《RabbitMQ实战指南》你看了吗?_第12张图片

  • 7. 如果让你写一个消息队列 ,该如何进行架构设计 ?说一下你的思路 ?

《RabbitMQ实战指南》你看了吗?_第13张图片

撒花环节

RabbitMQ用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,所以发展到今天,被越来越多的人认可。因此RabbitMQ对于每一个想提升自己的Java程序员来说,都是一个必备的硬性条件,没有理由不学,也没有理由不把它学好。

今天咱们说的这个《RabbitMQ实战指南》、自己手绘的学习大纲(xmind文件)、RabbitMQ面试二十三连问以及整理的Java高级面试必备的七大消息队列题(面试官心里分析+面试题剖析),其实都是我们平时学习、面试必备的东西。如果这些你都没有,点击下方小卡片小编都可免费分享!!!

你可能感兴趣的:(rabbitmq,分布式,java,学习)