对新手十分友好的RabbitMQ学习笔记,入门的不二之选

120 阅读4分钟

前言

RabbitMQ 原理初探

RabbitMQ 2007 年发布,是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议来实现。

基本概念

提到RabbitMQ,就不得不提AMQP协议。AMQP协议是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

先了解一下AMQP协议中间的几个重要概念:

Server:接收客户端的连接,实现AMQP实体服务。
Connection:连接,应用程序与Server的网络连接,TCP连接。
Channel:信道,消息读写等操作在信道中进行。客户端可以建立多个信道,每个信道代表一个会话任务。
Message:消息,应用程序和服务器之间传送的数据,消息可以非常简单,也可以很复杂。由Properties和Body组成。Properties为外包装,可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body就是消息体内容。
Virtual Host:虚拟主机,用于逻辑隔离。一个虚拟主机里面可以有若干个Exchange和Queue,同一个虚拟主机里面不能有相同名称的Exchange或Queue。
Exchange:交换器,接收消息,按照路由规则将消息路由到一个或者多个队列。如果路由不到,或者返回给生产者,或者直接丢弃。RabbitMQ常用的交换器常用类型有direct、topic、fanout、headers四种,后面详细介绍。
Binding:绑定,交换器和消息队列之间的虚拟连接,绑定中可以包含一个或者多个RoutingKey。
RoutingKey:路由键,生产者将消息发送给交换器的时候,会发送一个RoutingKey,用来指定路由规则,这样交换器就知道把消息发送到哪个队列。路由键通常为一个“.”分割的字符串,例如“com.rabbitmq”。
Queue:消息队列,用来保存消息,供消费者消费。

RabbitMQ的特点

  • RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。

  • AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

  • AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

  • RabbitMQ的可靠性是非常好的,数据能够保证百分之百的不丢失。 可以使用镜像队列,它的稳定性非常好。所以说在我们互联网金融行业。对数据的稳定性和可靠性要求都非常高的情况下,我们都会选择RabbitMQ。当然没有kafka性能好,但是要比AvtiveMQ性能要好很多。也可以自己做一些性能的优化。

  • RabbitMQ可以构建异地双活架构,包括每一个节点存储方式可以采用磁盘或者内存的方式。

RabbitMQ业界实用度怎么样?哪些大厂在使用?为什么选择RabbitMQ?

据我所知,滴滴、美团、去哪儿、头条等国内一线大厂都在使用RabbitMQ,他们选择RabbitMQ的原因无非就是一下几点:

  • 开源、性能优秀、稳定性保障
  • 提供可靠性消息投递模式(confirm)、返回模式(return)
  • 与SpringAMQP完美的整合、扩展性变得更强、API丰富
  • 集群模式丰富、表达式配置、HA(高可用)模式、镜像队列模型
  • 保证数据不丢失的前提下做到高可靠性、可用性

怎么去学RabbitMQ?

这就是今天的重点了,我今天给大家分享的RabbitMQ学习笔记就是帮助大家去学习、巩固 RabbitMQ的。这份笔记从如何安装、配置到高可用集群再到项目实战,一站式服务!

无论你是一窍不通的新人,还是需要去巩固、实战去面试大厂的朋友们,我想这份笔记你们都不应该错过!

由于篇幅原因,这里不能把笔记的全部内容全部分享出来**【+jcc4261获取】**能展示一些笔记的内容截图

第一部分:RabbitMQ简介

第二部分:RabbitMQ入门

第三部分:客户端开发向导

第四部分:RabbitMQ进阶

第五部分:RabbitMQ管理

第六部分:RabbitMQ配置

第七部分:RabbitMQ运维

第八部分:跨越集群的界限

第九部分:RabbitMQ高阶

第十部分:网络分区

第十一部分:RabbitMQ扩展

总结

之前的文章中我提到过,一个程序员想要得到很好的提升,在技术层面有很大的提升一定要把握自己职业生涯的前五年,这是我们学习能力最强的时期。

MQ绝对是我们程序员需要掌握的知识点,它不仅是文章开头的滴滴、美团、去哪儿、头条等国内一线大厂都在使用RabbitMQ,大量的金融、银行都在使用。