写在前面
如果对你有帮助,请给点个关注和点个赞哦,嘿嘿嘿
MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。而RabbitMQ是实现了高级消息队列协议的开源消息代理软件。RabbitMQ服务器是用Erlang语言编写的,而聚类和故障转移是构建在开放电信平台框架上的。
部署RabbitMQ
首先在用SpringBoot集成RabbitMQ之前呢,我们当然需要先部署一个RabbitMQ啦,你可以选择自己电脑安装,但是我还是比较推荐使用Docker进行部署的,比较方便,Docker部署RabbitMQ比较方便,这里我教一下如何使用Docker部署RabbitMQ,我使用的操作系统是Ubuntu19,首先把RabbitMQ的镜像pull下来,注意pull镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面,比如
1 | docker pull rabbitmq:3.8.2-management |
等待pull下来,pull下来之后,我们就可以直接运行了(这里只是简单的安装了一个单点Rabbitmq,如果要部署集群,当然没有这么简单啦,可以看我另一篇博文),运行的命令如下:
1 | docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq rabbitmq:3.8.2-management |
该镜像拥有一个基于 web 的控制台和 Http API。Http API 可以在地址看到如何使用:http://localhost:15672/api/
,这里说明一下指令选项
- 15672 :表示 RabbitMQ 控制台端口号,可以在浏览器中通过控制台来执行 RabbitMQ 的相关操作。
- 5672 : 表示 RabbitMQ 所监听的 TCP 端口号,应用程序可通过该端口与 RabbitMQ 建立 TCP 连接,并完成后续的异步消息通信
- RABBITMQDEFAULTUSER:用于设置登陆控制台的用户名,这里我设置 admin
- RABBITMQDEFAULTPASS:用于设置登陆控制台的密码,这里我设置 admin
容器启动成功后,可以在浏览器输入地址:http://ip地址:15672/ 访问控制台
这里简单描述下上图中控制台的列表的作用:
- Overview :用于查看 RabbitMQ 的一些基本信息(消息队列、消息发送速率、节点、端口和上下文信息等)
- Connections:用于查看 RabbitMQ 客户端的连接信息
- Channels:用户查看 RabbitMQ 的通道信息
- Exchange:用于查看 RabbitMQ 交换机
- Queues:用于查看 RabbitMQ 的队列
- Admin:用于管理用户,可增加用户
SpringBoot整合RabbitMQ
首先使用Idea创建一个只包含web模块的项目,然后引入rabbitmq的依赖,依赖如下:
1 | <dependency> |
然后我们在application.properties主配置文件中进行如下配置
1 | spring.rabbitmq.host=xxxxxxip地址 |
然后接下来我们写一个针对RabbitMQ的配置文件(用来管理消息队列),以及一个Sender和一个Receiver,具体内容如下:
1 | import org.springframework.amqp.core.AmqpTemplate; |
1 | import org.springframework.amqp.rabbit.annotation.RabbitHandler; |
1 | import org.springframework.amqp.core.Queue; |
测试及结果
这里测试发送的消息直接是 String 类型的,你也可以测试下 Bean 类,这需要注意需要序列化。
1 |
|