什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

说明:想要理解RabbitMQ,需要先理解MQ是什么?能做什么?然后根据基础知识去理解RabbitMQ是什么、提供了什么功能 。
一、MQ的简单理解1. 什么是MQ?

  • 消息队列(Message Queue),是基础数据结构中 “先进先出” 的一种数据结构 。
  • 一般用来解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构 。
2.MQ是怎么实现消息传递的?
  1. 生产者产生消息并把传输的数据(消息)放在队列中,用队列机制来实现消息传递 。
  2. 消费者可以到指定的队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息 。
3.MQ的几个主要特性
  • 解耦:一个业务需要多个模块共同实现,或一条消息有多个系统对应处理,只需要在主业务完成以后,发送一条MQ,其余模块消费MQ消息,即可实现业务,降低模块之间的耦合 。
  • 异步:主业务执行结束后,从属业务通过MQ异步处理,减少业务的响应时间,提高用户体验 。
  • 削峰:高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪 。
4.MQ的缺点
  • 系统可用性降低 。依赖服务越多,服务越容易挂掉 。需要考虑MQ瘫痪的情况 。
  • 系统的复杂性提高 。需要考虑消息丢失、消息重复消费、消息传递的顺序性 。
  • 业务一致性 。主业务和从属业务一致性的处理 。
二、RabbitMQ的简单介绍1. 什么是RabbitMQ?RabbitMQ是消息代理,它接受并转发消息 。
  • RabbitMQ可以理解为一个邮箱,或者一个邮局,或者是一个邮递员,保证 “张三” 的信件最终传递给 “李四” 。
  • RabbitMQ与上述所描述的邮局(邮箱、邮递员)的主要区别在于它不处理纸张,而是接受、存储和转发二进制数据块消息 。
2.RabbitMQ和消息传递的三个术语
  • 生产:生产只意味着发送 。发送消息的程序是生产者(production) 。
  • 队列:队列是位于RabbitMQ中的“邮箱”的名称 。尽管消息流经RabbitMQ和应用程序,但他们只能存在于队列中 。队列只受主机的内存和磁盘限制,它的本质上是一个打的消息缓冲区 。许多生产者可以向一个队列发送消息,许多消费者可以尝试从一个队列接收数据 。
  • 消费(接收):消费与接收具有相似的含义 。一个消费者(consumer)是一个程序,主要是等待接收信息 。
注意:生产者、消费者、代理不必部署在同一主机上,应用程序既可以是生产者,又可以是消费者
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
三、RabbitMQ安装3.1环境说明(本文以RabbitMQ3.8.11为例)RabbitMQ对Erlang版本要求(Rabbit是基于Erlang编写的)
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
RabbitMQ对JDK版本要求
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
3.2 安装Erlang步骤(本文以windows版安装为例)3.2.1 下载Erlang,或访问如下链接进行下载:
http://erlang.org/download/otp_win64_23.2.exe
3.2.2 双击运行 otp_win64_23.2.exe ,点击下一步完成安装 。
3.2.3 安装完成后配置环境变量,如下图所示
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 

什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
3.2.4 运行窗口输入cmd,在dos窗口输入 erl,返回如图中所示,则代表erlang安装完成 。
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
3.2 安装RibbitMQ步骤(本文以windows版安装为例)3.2.1 点击下载RibbitMQ,或访问如下链接进行下载:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.11/rabbitmq-server-3.8.11.exe
3.2.2 双击运行 rabbitmq-server-3.8.11.exe,点击下一步完成安装 。
3.2.3 双击RabbitMQ Service - start 运行RabbitMQ
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
出现如下提示,则代表服务启动成功:
什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?

文章插图
 
3.2.4 访问RabbitMQ控制台
控制台地址:http://localhost:15672/
控制台用户名/密码 : guest/guest
四、RabbitMQ传递消息的方式(JAVA客户端)