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.引入依赖
- <!--rabbitmq-需要的 AMQP 依赖-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-amqp</artifactId>
- </dependency>
复制代码 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
- */
- @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
- 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
- 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.控制层调用发送消息的方法
- 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 在控制台可以进行监控
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |