行业知识
RabbitMQ(安装配置以及与SpringBoot整合)
2026-11-01 02:50:14
来源:互联网转载
文章目录
- 1.基本介绍
- 2.Linux下安装配置RabbitMQ
- 1.安装erlang环境
- 1.将文件上传到/opt目录下
- 2.进入/opt目录下,然后安装
- 2.安装RabbitMQ
- 1.进入/opt目录,安装所需依赖
- 2.安装MQ
- 3.基本配置
- 1.启动MQ
- 2.查看MQ状态
- 3.安装web管理插件
- 4.安装web管理插件超时的解决方案
- 1.修改etc/hosts文件,修改主机名
- 2.重启MQ如果还报错就修改ip与本机ip相同
- 5.设置开机自启
- 6.关闭MQ
- 7.组合指令
- 1.启动MQ并查看状态
- 2.关闭MQ并查看状态
- 3.重启MQ并查看状态
- 4.RabbitMQ管控台配置
- 1.开放15672端口
- 1.宝塔开启
- 2.腾讯云开启,仅限本机登录
- 2.访问 http://ip:15672 进行登录
- 1.使用guest用户登录,出现权限问题
- 2.进入/etc/rabbitmq 编辑 rabbitmq.config
- 3.将下面这句话粘贴进去
- 4.重启MQ,使配置生效
- 5.再次登录,成功!
- 3.控制台参数解析
- 1.端口
- 2.交换机,默认七个
- 4.用户管理
- 1.进入Admin
- 2.添加用户test,默认不能访问虚拟主机
- 3.给test用户分配可以访问的虚拟主机
- 4.为了安全,修改guest用户的密码
- 5.增加虚拟主机
- 1.添加/test的虚拟主机
- 2.配置test用户可以访问虚拟主机/test
- 3.删除test用户
- 5.SpringBoot集成MQ
- 1.需求分析
- 2.环境配置
- 1.引入依赖
- 2.MQ的端口配置
- 1.编辑MQ的配置文件
- 2.修改端口5672为6783(防止被攻击)
- 3.重启MQ使其生效
- 4.测试是否成功
- 5.宝塔开启6783端口
- 6.腾讯云开启
- 3.配置application.yml
- 4.RabbitMQ配置类创建队列 RabbitMQConfig.java
- 3.基本使用
- 1.编写消息发送者 MQSender.java
- 2.编写消息接受者 MQReceiver.java
- 3.控制层调用发送消息的方法
- 4.启动测试
- 1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息
- 2.http://ip:15672 在控制台可以进行监控
1.基本介绍
2.Linux下安装配置RabbitMQ
1.安装erlang环境
1.将文件上传到/opt目录下
2.进入/opt目录下,然后安装
cd /opt && rpm -ivh erlang-21.3-1.el7.x86_64.rpm
2.安装RabbitMQ
1.进入/opt目录,安装所需依赖
cd /opt && yum install socat -y
2.安装MQ
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
3.基本配置
1.启动MQ
/sbin/service rabbitmq-server start
2.查看MQ状态
/sbin/service rabbitmq-server status
3.安装web管理插件
rabbitmq-plugins enable rabbitmq_management
4.安装web管理插件超时的解决方案
1.修改etc/hosts文件,修改主机名
2.重启MQ如果还报错就修改ip与本机ip相同
5.设置开机自启
chkconfig rabbitmq-server on
6.关闭MQ
/sbin/service rabbitmq-server stop
7.组合指令
1.启动MQ并查看状态
/sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
2.关闭MQ并查看状态
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server status
3.重启MQ并查看状态
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
4.RabbitMQ管控台配置
1.开放15672端口
1.宝塔开启
systemctl start firewalld && firewall-cmd --permanent --add-port=15672/tcp && firewall-cmd --reload && firewall-cmd --query-port=15672/tcp
2.腾讯云开启,仅限本机登录
2.访问 http://ip:15672 进行登录
1.使用guest用户登录,出现权限问题
2.进入/etc/rabbitmq 编辑 rabbitmq.config
cd /etc/rabbitmq && vim rabbitmq.config
3.将下面这句话粘贴进去
[{rabbit,[{loopback_users,[]}]}].4.重启MQ,使配置生效
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
5.再次登录,成功!
3.控制台参数解析
1.端口
2.交换机,默认七个
4.用户管理
1.进入Admin
2.添加用户test,默认不能访问虚拟主机
3.给test用户分配可以访问的虚拟主机
4.为了安全,修改guest用户的密码
5.增加虚拟主机
1.添加/test的虚拟主机
2.配置test用户可以访问虚拟主机/test
3.删除test用户
5.SpringBoot集成MQ
1.需求分析
2.环境配置
1.引入依赖
org.springframework.boot spring-boot-starter-amqp
2.MQ的端口配置
1.编辑MQ的配置文件
cd /etc/rabbitmq && vim rabbitmq.config
2.修改端口5672为6783(防止被攻击)
[ {rabbit, [ {tcp_listeners, [{"0.0.0.0", 6783}]}, {loopback_users, []} ]}].3.重启MQ使其生效
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
4.测试是否成功
netstat -plnt | grep 6783
5.宝塔开启6783端口
systemctl start firewalld && firewall-cmd --permanent --add-port=6783/tcp && firewall-cmd --reload && firewall-cmd --query-port=6783/tcp
6.腾讯云开启
3.配置application.yml
# RabbitMQ 配置 rabbitmq: # 服务器地址 host: # 用户名 username: # 密码 password: ****** # 虚拟主机 virtual-host: / # 端口 port: 6783 # 消息监听器配置 listener: simple: #消费者最小数量 concurrency: 10 #消费者最大数量 max-concurrency: 10 #限制消费者,每次只能处理一条消息,处理完才能继续下一条消息 prefetch: 1 #启动时是否默认启动容器,默认为 true auto-startup: true #被拒绝时重新进入队列的 default-requeue-rejected: true # 消息重试配置 template: retry: #启用消息重试机制,默认为 false enabled: true #初始重试间隔时间 initial-interval: 1000ms #重试最大次数,默认为 3 次 max-attempts: 3 #重试最大时间间隔,默认 10000ms max-interval: 10000ms #重试的间隔乘数 #配置 2 的话,第一次等 1s,第二次等 2s,第三次等 4s multiplier: 1
4.RabbitMQ配置类创建队列 RabbitMQConfig.java
package com.sxs.seckill.config;import org.springframework.amqp.core.Queue;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * Description: * * @Author sun * @Create 2024/5/11 13:58 * @Version 1.0 */@Configurationpublic class RabbitMQConfig { private static final String QUEUE = "queue"; /** * 1. 配置队列 * 2. 队列名为 queue * 3. true 表示: 持久化 * durable: 队列是否持久化。 队列默认是存放到内存中的,rabbitmq 重启则丢失, * 若想重启之后还存在则队列要持久化, * 保存到 Erlang 自带的 Mnesia 数据库中,当 rabbitmq 重启之后会读取该数据库 */ @Bean public Queue queue() { return new Queue(QUEUE, true); }}3.基本使用
1.编写消息发送者 MQSender.java
package com.sxs.seckill.rabbitmq;import lombok.extern.slf4j.Slf4j;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * Description: 消息发送者 * * @Author sun * @Create 2024/5/11 14:04 * @Version 1.0 */@Service@Slf4jpublic class MQSender { @Resource private RabbitTemplate rabbitTemplate; public void send(Object message) { log.info("发送消息: " + message); // 发送消息到队列,需要指定在配置类中配置的队列名 rabbitTemplate.convertAndSend("queue", message); }}2.编写消息接受者 MQReceiver.java
package com.sxs.seckill.rabbitmq;import lombok.extern.slf4j.Slf4j;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframework.stereotype.Service;/** * Description: 消息接收者 * * @Author sun * @Create 2024/5/11 14:08 * @Version 1.0 */@Service@Slf4jpublic class MQReceiver { // 方法,接收消息 @RabbitListener(queues = "queue") public void receive(Object message) { log.info("接收消息: " + message); }}3.控制层调用发送消息的方法
package com.sxs.seckill.controller;import com.sxs.seckill.rabbitmq.MQSender;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;/** * Description: * * @Author sun * @Create 2024/5/11 14:13 * @Version 1.0 */@Controllerpublic class RabbitMQHandler { @Resource private MQSender mqSender; // 调用发送消息的方法 @RequestMapping("/mq") @ResponseBody public void mq() { mqSender.send("hello rabbitmq"); }}4.启动测试
1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息
2.http://ip:15672 在控制台可以进行监控