最近在学习消息队列RabbitMQ相关的知识,打算把自己的理解写下来,包括踩过的坑,记录一下,也分享给大家,欢迎评论区批评指正。话不多说,进入正题……
什么是消息队列
消息队列(Message Queue),本质也是一个队列,所以消息也会符合先进先出的规则。消息队列是一种跨进程的通信机制,被用于上下游传递消息。
RabbitMQ安装和环境配置
安装
我使用的是Docker环境安装的RabbitMQ镜像
# 查询所有的RabbitMQ镜像
docker search rabbitmq
# 安装RabbitMQ
docker pull rabbitmq
# 运行RabbitMQ镜像 -d表示在后台运行 -p端口映射 --name 自定义容器名称 容器ID
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbit
# 查看运行的镜像
docker ps -a
# 启动RabbitMQ
docker start 进程ID
# 安装RabbitMQ插件可以让我们进入到RabbitMQ的管理页面
rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management
以上就是docker安装的步骤了,在浏览器中输入RabbitMQ主机的IP:15672,如果出现下面的页面,说明咱的RabbitMQ就安装配置成功了。用户名和密码都是guest
点击login之后会进入到管理的主页面
在这里可以管理连接(Connection)、通道(Channel)、交换机(Exchange)、队列(Queue)等RabbitMQ的主要配置。
Maven项目开发设置
-
引入依赖
<!-- 引入RabbitMQ相关依赖 --> <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0</version> </dependency>
-
RabbitMQ连接工具的封装
public class RabbitMQUtil { // 使用静态资源创建连接MQ的连接工厂对象 public static ConnectionFactory connectionFactory; // 类加载之前只执行一次 static { connectionFactory = new ConnectionFactory(); // 设置连接RabbitMQ的主机 connectionFactory.setHost("127.0.0.1"); // 设置端口号 connectionFactory.setPort(5672); // 设置虚拟主机 connectionFactory.setVirtualHost("/ems")