文章目录
-
- 1.基本介绍
- 2.Linux下安装配置RabbitMQ
-
-
- 1.安装erlang环境
- 2.安装RabbitMQ
- 3.基本配置
- 4.RabbitMQ管控台配置
-
- 1.开放15672端口
- [2.访问 http://ip:15672 进行登录](#2.访问 http://ip:15672 进行登录)
-
- 1.使用guest用户登录,出现权限问题
- [2.进入/etc/rabbitmq 编辑 rabbitmq.config](#2.进入/etc/rabbitmq 编辑 rabbitmq.config)
- 3.将下面这句话粘贴进去
- 4.重启MQ,使配置生效
- 5.再次登录,成功!
- 3.控制台参数解析
- 4.用户管理
- 5.增加虚拟主机
-
- 5.SpringBoot集成MQ
-
-
- 1.需求分析
- 2.环境配置
-
- 1.引入依赖
- 2.MQ的端口配置
- 3.配置application.yml
- [4.RabbitMQ配置类创建队列 RabbitMQConfig.java](#4.RabbitMQ配置类创建队列 RabbitMQConfig.java)
- 3.基本使用
-
- [1.编写消息发送者 MQSender.java](#1.编写消息发送者 MQSender.java)
- [2.编写消息接受者 MQReceiver.java](#2.编写消息接受者 MQReceiver.java)
- 3.控制层调用发送消息的方法
- 4.启动测试
-
- [1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息](#1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息)
- [2.http://ip:15672 在控制台可以进行监控](#2.http://ip:15672 在控制台可以进行监控)
-
1.基本介绍

2.Linux下安装配置RabbitMQ
1.安装erlang环境
1.将文件上传到/opt目录下

2.进入/opt目录下,然后安装
sh
cd /opt && rpm -ivh erlang-21.3-1.el7.x86_64.rpm

2.安装RabbitMQ
1.进入/opt目录,安装所需依赖
sh
cd /opt && yum install socat -y

2.安装MQ
sh
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

3.基本配置
1.启动MQ
sh
/sbin/service rabbitmq-server start

2.查看MQ状态
sh
/sbin/service rabbitmq-server status

3.安装web管理插件
sh
rabbitmq-plugins enable rabbitmq_management

4.安装web管理插件超时的解决方案
1.修改etc/hosts文件,修改主机名


2.重启MQ如果还报错就修改ip与本机ip相同

5.设置开机自启
sh
chkconfig rabbitmq-server on

6.关闭MQ
sh
/sbin/service rabbitmq-server stop

7.组合指令
1.启动MQ并查看状态
sh
/sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status

2.关闭MQ并查看状态
sh
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server status

3.重启MQ并查看状态
sh
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status

4.RabbitMQ管控台配置
1.开放15672端口
1.宝塔开启
sh
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
sh
cd /etc/rabbitmq && vim rabbitmq.config

3.将下面这句话粘贴进去
sh
[
{
rabbit,
[{
loopback_users,[]
}]
}
].

4.重启MQ,使配置生效
sh
/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.引入依赖
xml
<!--rabbitmq-需要的 AMQP 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.MQ的端口配置
1.编辑MQ的配置文件
sh
cd /etc/rabbitmq && vim rabbitmq.config
2.修改端口5672为6783(防止被攻击)
config
[
{rabbit, [
{tcp_listeners, [{"0.0.0.0", 6783}]},
{loopback_users, []}
]}
].
3.重启MQ使其生效
sh
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
4.测试是否成功
sh
netstat -plnt | grep 6783

5.宝塔开启6783端口
sh
systemctl start firewalld && firewall-cmd --permanent --add-port=6783/tcp && firewall-cmd --reload && firewall-cmd --query-port=6783/tcp

6.腾讯云开启

3.配置application.yml
yaml
# 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
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
*/
@Configuration
public 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
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
@Slf4j
public class MQSender {
@Resource
private RabbitTemplate rabbitTemplate;
public void send(Object message) {
log.info("发送消息: " + message);
// 发送消息到队列,需要指定在配置类中配置的队列名
rabbitTemplate.convertAndSend("queue", message);
}
}
2.编写消息接受者 MQReceiver.java
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
@Slf4j
public class MQReceiver {
// 方法,接收消息
@RabbitListener(queues = "queue")
public void receive(Object message) {
log.info("接收消息: " + message);
}
}
3.控制层调用发送消息的方法
java
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
*/
@Controller
public 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 在控制台可以进行监控
