码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • RabbitMQ(安装配置以及与SpringBoot整合)


    文章目录

      • 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.基本介绍

    image-20240511093548128

    2.Linux下安装配置RabbitMQ

    1.安装erlang环境
    1.将文件上传到/opt目录下

    image-20240511094141520

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

    image-20240511094607525

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

    image-20240511094818005

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

    image-20240511094907481

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

    image-20240511095035550

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

    image-20240511095131428

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

    image-20240511095242435

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

    image-20240511095330229

    image-20240511095429376

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

    image-20240511095825597

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

    image-20240511100028069

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

    image-20240511100119207

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

    image-20240511100244007

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

    image-20240511100349257

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

    image-20240511100501531

    4.RabbitMQ管控台配置
    1.开放15672端口
    1.宝塔开启
    systemctl start firewalld && firewall-cmd --permanent --add-port=15672/tcp && firewall-cmd --reload && firewall-cmd --query-port=15672/tcp
    
    • 1

    image-20240511101456789

    2.腾讯云开启,仅限本机登录

    image-20240511101924825

    2.访问 http://ip:15672 进行登录
    1.使用guest用户登录,出现权限问题

    image-20240511102159480

    2.进入/etc/rabbitmq 编辑 rabbitmq.config
    cd /etc/rabbitmq && vim rabbitmq.config
    
    • 1

    image-20240511102448107

    3.将下面这句话粘贴进去
    [
    {
    	rabbit,
    		[{
    			loopback_users,[]
    		}]
    }
    ].
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20240511102612261

    4.重启MQ,使配置生效
    /sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
    
    • 1
    5.再次登录,成功!

    image-20240511102721570

    3.控制台参数解析
    1.端口

    image-20240511102910962

    2.交换机,默认七个

    image-20240511102958591

    4.用户管理
    1.进入Admin

    image-20240511103240680

    2.添加用户test,默认不能访问虚拟主机

    image-20240511103411192

    image-20240511103438155

    3.给test用户分配可以访问的虚拟主机

    image-20240511103552470

    image-20240511103630246

    image-20240511103642661

    4.为了安全,修改guest用户的密码

    image-20240511104138104

    5.增加虚拟主机
    1.添加/test的虚拟主机

    image-20240511103749131

    2.配置test用户可以访问虚拟主机/test

    image-20240511103850074

    image-20240511103857649

    3.删除test用户

    image-20240511104414406

    5.SpringBoot集成MQ

    1.需求分析

    image-20240511104725661

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

    image-20240511142336772

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

    image-20240511135713648

    6.腾讯云开启

    image-20240511135640831

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    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);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    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);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    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");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    4.启动测试
    1.访问 http://localhost:9092/seckill/mq 成功发送和接受消息

    image-20240511142633815

    2.http://ip:15672 在控制台可以进行监控

    image-20240511143128879

  • 相关阅读:
    24位AD分辨率、256Ksps*16通道国产数据采集卡、uV级采集、支持IEPE
    软件应用开发安全指南
    不负昭华,前程似锦,新一批研发效能认证证书颁发丨IDCF
    react实战系列 —— React 中的表单和路由的原理
    java计算机毕业设计考试编排管理系统源码+mysql数据库+系统+lw文档+部署
    响应式Web设计:移动优先的方法
    uniapp启动图.9.png制作方法
    Altium Designer PCB加载封装和向导封装,将IPC封装、加载封装和向导封装添加到原理图里、制作集成库
    Java基础|Java并发相关api
    【计算机网络笔记】DHCP协议
  • 原文地址:https://blog.csdn.net/m0_64637029/article/details/138730004
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号