RabbitMQ(安装配置以及与SpringBoot整合)

news2024/11/18 4:38:25

文章目录

    • 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

image-20240511094607525

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

image-20240511094818005

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

image-20240511094907481

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

image-20240511095035550

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

image-20240511095131428

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

image-20240511095242435

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

image-20240511095330229

image-20240511095429376

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

image-20240511095825597

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

image-20240511100028069

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

image-20240511100119207

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

image-20240511100244007

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

image-20240511100349257

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

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

image-20240511101456789

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

image-20240511101924825

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

image-20240511102159480

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

image-20240511102448107

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

image-20240511102612261

4.重启MQ,使配置生效
/sbin/service rabbitmq-server stop && /sbin/service rabbitmq-server start && /sbin/service rabbitmq-server status
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.引入依赖
        <!--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

image-20240511142336772

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

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
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 成功发送和接受消息

image-20240511142633815

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

image-20240511143128879

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1664332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MotionDiffuse: Text-Driven Human Motion Generation withDiffusion Model # 论文阅读

URL https://arxiv.org/pdf/2208.15001 主页&#xff1a;https://mingyuan-zhang.github.io/projects/MotionDiffuse.html TD;DR 22 年 8 月商汤的文章&#xff0c;引用量 200。基于 SD&#xff0c;任务是输入文本的动作描述&#xff0c;生成对应的动作序列。 已有的 moti…

AutoTable, Hibernate自动建立表替代方案

痛点 之前一直使用JPA为主要ORM技术栈&#xff0c;主要是因为Mybatis没有实体逆向建表功能。虽然Mybatis有从数据库建立实体&#xff0c;但是实际应用却没那么美好&#xff1a;当实体变更时&#xff0c;往往不会单独再建立一个数据库重新生成表&#xff0c;然后把表再逆向为实…

day07beef-xss之根据beef-xss获取cookies

1.安装 apt-get update apt-get install beef-xss 若报错运行不了尝试 apt remove ruby apt remove beef-xss apt-get install ruby apt-get install ruby-dev libpcap-dev gem install eventmachine apt-get install beef-xss 2.运行 beef-xss 运行成功会自动弹出浏览框。 攻…

CRF++ 中文NER

CLUENER数据准备 data [] with open("data/train.json", r) as f:for line in f.readlines():data.append(eval(line)) data特征提取 import jieba import jieba.posseg as psegdef process(text, labelsNone):words [i for i in text]words_flags pseg.cut(tex…

Linux进程——进程地址空间

前言&#xff1a;在讲完环境变量后&#xff0c;相信大家对Linux有更进一步的认识&#xff0c;而Linux进程概念到这也快接近尾声了&#xff0c;现在我们了解Linux进程中的地址空间&#xff01; 本篇主要内容&#xff1a; 了解程序地址空间 理解进程地址空间 探究页表和虚拟地址空…

ChatGPT 即将登陆 iPhone;斯坦福推出 AI 辅助全息成像技术丨 RTE 开发者日报 Vol.202

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品

1.题目 2. 解法⼀&#xff08;暴⼒解法&#xff0c;会超时&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3. 代码实现 3. 解法⼆&#xff08;双指针-对撞指针&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3.代码实现 1.C语言 2…

4G,5G执法记录仪人脸识别、人脸比对使用说明

4G/5G执法记录仪或4G/5G智能安全帽&#xff0c;做前端人脸识别、人脸比对&#xff0c;采用了上市公司的成熟的人脸识别算法&#xff0c;需要支付LICENSE给算法公司&#xff0c;理论上前端设备支持30K的人脸库&#xff08;受设备运行内存限制&#xff09;。 4G/5G执法记录仪侧要…

1.前端环境搭建

1.安装nodejs 因为我们开发Vue项目需要使用npm命令来创建和启动&#xff0c;安装node.js是为了获得这个命令&#xff0c;目前和使用node.js无关 下载地址&#xff1a;http://nodejs.cn/download/ 下载完之后安装&#xff0c;通过cmd查看是否安装成功 node --version2.创建项目…

使用./build.sh编译ORB_SLAM源码时出现报错:/usr/bin/ld:找不到 -lboost_serialization的解决办法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、/usr/bin/ld:找不到 -lboost_serialization1.问题描述2.解决(1). 下载源码(2) . 编译安装 一、/usr/bin/ld:找不到 -lboost_serialization 1.问题描述 在安装…

KAN核心团队震撼力作!MIT华人用AI首次发现物理学全新方程 | 最新快讯

新智元报道 编辑&#xff1a;Aeneas 好困 刚刚提出了 KAN 的 MIT 物理学家 Max Tegmark 和北大校友刘子鸣&#xff0c;又有一项重磅研究问世了&#xff01;团队发现&#xff0c;它们用 AI 发现了物理学中的新方程&#xff0c;从此&#xff0c;AI 很可能被引入物理学研究领域&am…

IPv6资产测绘哪家强?揭秘新一代网络空间资产测绘平台的独门秘籍

网络空间资产测绘&#xff0c;即通过一系列技术手段&#xff0c;对网络中的各类资产进行全面的发现、分类和定位&#xff0c;为各类用户提供精准的数据支撑和决策依据。网络空间资产测绘作为一门新兴的交叉学科&#xff0c;融合了计算机网络技术、数据挖掘、人工智能、信息安全…

Docker学习笔记(一)安装Docker、镜像操作、容器操作、数据卷操作

文章目录 1 Docker介绍1.1 Docker的优势1.1.1 应用部署的环境问题1.1.2 Docker解决依赖兼容问题1.1.3 Docker解决操作系统环境差异1.1.4 小结 1.2 Docker和虚拟机的区别1.3 Docker架构1.3.1 镜像和容器1.3.2 DockerHub1.3.3 Docker架构 1.4 安装Docker1.4.1 卸载旧版本Docker&a…

【微信开发】微信支付前期准备工作(申请及配置)

1、申请并配置公众号或微信小程序 1.1 账户申请 通过微信公众平台&#xff0c;根据指引申请微信小程序或公众号&#xff0c;申请时需要微信认证&#xff0c;申请流程不在赘述 1.2 信息配置 申请通过后&#xff0c;需进入小程序和公众号内进行信息配置 1.2.1 小程序信息配置…

小程序地理位置接口申请教程来啦4步学会

小程序地理位置接口有什么功能&#xff1f; 如果我们提审后驳回理由写了“当前提审小程序代码包中地理位置相关接口( chooseAddress、getLocation )暂未开通&#xff0c;建议完成接口开通后或移除接口相关内容后再进行后续版本提审”&#xff0c;如果你也碰到类似问题&#xff…

任务:单域,域树的搭建

一、单域&#xff1a; 搭建所需的系统&#xff1a;win2016 sever&#xff0c;win10 1.在创建域前&#xff0c;先设置静态ip 先查看win2016 sever的IP&#xff0c; ip&#xff1a;192.168.154.133 网关&#xff1a;192.168.154.2 DNS服务器&#xff1a;192.168.154.2 设置…

FPGA学习笔记(1)——Vivado和HLS

1 Vivado设计 1.1 FPGA基本知识 Xilinx Atrix-7使用6输入LUT结构&#xff08;0-63&#xff09;CLB&#xff1a;可配置逻辑块Slice&#xff1a;每个CLB包含2个Slice(包含查找表LUT和8位寄存器REG)布线池&#xff1a;围绕在CLB周围&#xff0c;衔接FPGA的资源调度I/O块&#xf…

conan2 基础入门(02)-安装

conan2 基础入门(02)-安装 文章目录 conan2 基础入门(02)-安装⭐前言⭐安装python安装安装包安装自行操作 ⭐验证配置环境变量命令行验证conan配置文件 END ⭐前言 Conan 2.0: C and C Open Source Package Manager 官方提供三种安装conan的方式。分别为&#xff1a; Recommen…

vuex核心概念-getters

除了state之外&#xff0c;有时我们还需要从state中派生出一些状态&#xff0c;这些状态是依赖state的&#xff0c;此时会用到getters。

鸿蒙内核源码分析(远程登录篇) | 内核如何接待远方的客人

什么是远程登录? 每个人都有上门做客的经历,抖音也一直在教我们做人,做客不要空手去,总得带点东西,而对中国人你就不能送钟,不能送梨,最好也别送鞋,因他们与 终 离 邪 谐音,犯忌讳. 这是人情世故,叫礼仪,是中华文明圈的共识,是相互交流信任的基础. 那互联网圈有没有这种共识呢…