今天闲来无事,复习了一早上,把 RabbitMQ 简单总结下,看着感觉能理解到精髓,请给个赞,多谢!!!
Now,步入正题!
1、什么是 MQ ?
首先,你肯定会去百度什么是 RabbitMQ,了解下这个东西到底是啥个鬼?到底有啥子用?对吧?
其实啊,大家都知道,MQ 都是用来做消息队列的,从字面意思上来看,本质是一个队列,FIFO 先入先出,只不过队列中存放的是 message(消息)而已。它的主要用途:不同进程Process/线程Thread之间通信。
而我们今天想学习的 RabbitMQ 只是一种 MQ 中的一种消息队列。
为什么会产生消息队列?有几个原因:
不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;
不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了事实上的消息队列;
当前 MQ 框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka,以及阿里开源的RocketMQ。
2、什么是 RabbitMQ ?
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全。
开发语言为:Erlang –– 面向并发的编程语言。
3、网址
官网:
安装地址:
http://www.rabbitmq.com/download.html
Elang下载:
http://www.erlang.org/download/otp_win64_17.3.exe
接下来就要开始战斗了,准备好了吗?
4、安装RabbitMQ
打开 http://www.rabbitmq.com/download.html
5、下载完开始搭建 RabbitMQ 环境(当前所述皆为 Windows 环境下,LInux 环境下尚未研究)
a)下载 Elang:http://www.erlang.org/download/otp_win64_17.3.exe
下载完之后就跟平时安装软件一样,Next...Next 就可以了。
安装完成后,我们要安装 RabbitMQ 了。
b)双击打开 rabbitmq-server-3.7.15.exe
和安装软件一毛一样,下一步即可,安装完成。
然后打开开始菜单,就会看到下图:
c)双击启动管理工具 RabbitMQ Command Prompt (sbin dir)
输入命令:rabbitmq-plugins enable rabbitmq_management
这样我们就启动了管理工具。
如果启动/停止 RqbbitMQ,则输入下面的命令方可:
停止:net stop RabbitMQ
启动:net start RabbitMQ
见证奇迹的时刻到了,我们来看下成果。
d)打开浏览器,在地址栏输入 :http://127.0.0.1:15672
登陆界面出来了,用户名和密码都为 guest,然后登陆,就可以看到下方界面,说明我们的 RabbitMQ 安装成功了。
如果要管理功能的话,可以自行管理。
6、接下来,就要用项目验证了。
代码资源下载地址:https://download.csdn.net/download/qq_39415129/11557188
此项目是基于 SpringBoot 的,所以需要对 SpringBoot 要有一定的了解。
首先要引入 RabbitMQ 的依赖:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
然后在 src/main/resources里新增 application.properties文件
spring.application.name=spirng-boot-rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
我是将 SpringBoot 的主类改为了 Appllication,大家可以自行决定,当然也可不改。
主类代码很简单,最基本的 SpringBoot 启动类: