Ubuntu 环境安装 之 RabbitMQ 快速入手
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
🌱🌱个人主页:奋斗的明志
🌱🌱所属专栏:RabbitMQ
📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。

Ubuntu 环境安装
- 前言
- 一、什么是MQ(消息队列)
- MQ多用于分布式系统之间进行通信
- 二、MQ的作用
- 1、异步解耦
- 2、流量削峰
- 3、消息分发
- 4、延迟通知
- 三、为什么选择 RabbitMQ
- 1、Kafka
- 2、RocketMQ
- 3、RabbitMQ
- 四、RabbitMQ 快速上手
- 1、Ubuntu 环境安装
- 2、安装Erlang
- 3、查看erlang版本
- 五、安装RabbitMQ
- 1、安装
- 2、确认安装结果
- 六、安装RabbitMQ管理界面
- 七、启动服务并访问
- 1、通过 IP:port 访问界面
- 2、添加管理员用户
- 3、给用户添加权限
- 4、通过IP:port访问, 并使用刚才设置的用户名和密码登录
- 5、通过set设置权限
- 6、添加用户
- 7、添加虚拟机
前言
Rabbit, 兔子的意思
互联网行业很多公司, 都喜欢用动物命名产品, 或者作为公司的logo, 吉祥物. 比如: 腾讯的企鹅, 京东的狗, 美团的袋鼠, 携程的海豚,阿里就更多了, 蚂蚁, 飞猪,天猫,菜鸟, 闲鱼, 盒马… 更是以一己之力, 组建了一个动物园…
Rabbit也是⼀个公司名.MQ ( message queue )消息队列 的意思 ,RabbitMQ是Rabbit企业下的⼀个消息队列产品.
RabbitMQ是⼀个实现了AMQP的消息队列服务,是当前主流的消息中间件之⼀.
AMQP,即Advanced Message Queuing Protocol(⾼级消息队列协议),是⼀个通⽤的应⽤层协议,提供统⼀消息服务的协议, 为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端或中间件, 开发语言等条件的限制。
在互联网架构中, 会经常使用MQ来作为消息通信服务. 接下来我们看下什么是MQ
一、什么是MQ(消息队列)
MQ( Message queue ),从字面意思上看, 本质是个队列,FIFO 先⼊先出,只不过队列中存放的内容
是消息(message)⽽已. 消息可以非常简单,比如只包含文本字符串, JSON等,也可以很复杂, 比如内嵌对象.
在日常生活中,例如:手机、水杯…可能会进行一些排队摆放

MQ多用于分布式系统之间进行通信
- 系统之间的调用通常有两种方式:
- 同步通信:
直接调用对方的服务, 数据从一端发出后立即就可以达到另⼀端

- 异步通信:
数据从⼀端发出后,先进入⼀个容器进行临时存储,当达到某种条件后,再由这个容器发送给另⼀端.
容器的⼀个具体实现就是MQ( message queue )

RabbitMQ 就是MQ的⼀种实现
例如:
打电话客服直接响应
客服记录下来,过一段时间(24小时)内进行回复
二、MQ的作用
MQ主要工作是接收并转发消息, 在不同的应用场景下可以展现不同的作用
可以把MQ想象成一个仓库. 采购部门进货之后, 把零件放进仓库里
生产部门从仓库中取出零件, 并加工成产品.
MQ和仓库的区别是, 仓库里放的是物品, MQ里放的是消息
仓库负责存储物品,并转发物品,MQ负责存储和转发消息
1、异步解耦
在业务流程中, ⼀些操作可能非常耗时, 但并不需要即时返回结果. 可以借助MQ把这些操作异步化, 比如用户注册后发送注册短信或邮件通知, 可以作为异步任务处理, 而不必等待这些操作完成后才告知用户注册成功

2、流量削峰
在访问量剧增的情况下, 应用仍然需要继续发挥作用, 但是这样的突发流量并不常见. 如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费. 使用MQ能够使关键组件支撑突发访问压力, 不会因为突发流量而崩溃. 比如秒杀或者促销活动, 可以使用MQ来控制流量, 将请求排队, 然后系统根据自己的处理能力逐步处理这些请求.
例如:12306 节假日的时候进行买票(不可能在这个时候买入多台机器)
商场人多的时候进行排队
3、消息分发
当多个系统需要对同⼀数据做出响应时, 可以使用MQ进行消息分发. 比如支付成功后, 支付系统可以向MQ发送消息, 其他系统订阅该消息, 而无需轮询数据库.
4、延迟通知
在需要在特定时间后发送通知的场景中, 可以使用MQ的延迟消息功能, 比如在电⼦商务平台中,如果用户下单后⼀定时间内未⽀付,可以使用延迟队列在超时后自动取消订单
例如:会议时间提前通知
…
三、为什么选择 RabbitMQ
⽬前业界有很多的MQ产品, 例如RabbitMQ, RocketMQ, ActiveMQ, Kafka, ZeroMQ等, 也有直接使用Redis充当消息队列的案例, 这些消息队列, 各有侧重, 也没有好坏, 只有适合不适合, 在实际选型时, 需要结合自身需求以及MQ产品特征, 综合考虑
以下我们介绍⼀下当前最主流的3种MQ产品
1、Kafka
Kafka⼀开始的目的就是用于日志收集和传输,追求高吞吐量, 性能卓越, 单机吞吐达到⼗万级, 在日志领域比较成熟, 功能较为简单,主要⽀持简单的 MQ 功能, 如果有⽇志采集需求,肯定是首kafka了。
2、RocketMQ
RocketMQ采⽤Java语⾔开发, 由阿⾥巴巴开源, 后捐赠给了Apache.
它在设计时借鉴了Kafka,并做出了⼀些自己的改进, ⻘出于蓝⽽胜于蓝, 经过多年双⼗⼀的洗礼, 在
可⽤性、可靠性以及稳定性等⽅⾯都有出⾊的表现. 适合对于可靠性⽐较⾼,且并发⽐较⼤的场景, ⽐
如互联⽹⾦融. 但⽀持的客户端语⾔不多, 且社区活跃度⼀般
3、RabbitMQ
采⽤Erlang语言开发, MQ 功能⽐较完备, 且几乎⽀持所有主流语言,开源提供的界面也非常友好, 性能较好, 吞吐量能达到万级, 社区活跃度也⽐较高,比较适合中小型公司, 数据量没那么大, 且并发没
那么高的场景.
四、RabbitMQ 快速上手
接下来我们来进行RabbitMQ的安装, 并进行入门程序的演示,让大家对于RabbitMQ有⼀个更加直观的感受.
RabbitMQ 是⼀套开源的消息队列服务软件, 基于 Erlang 语言编写, 所以安装RabbitMQ之前, 需要先安装部署 Erlang 环境, 再安装 RabbitMQ 环境.
RabbitMQ大多部署在Linux操作系统

1、Ubuntu 环境安装
RabbitMQ已经包含在标准的Ubuntu仓库中, 然而,包含的版本通常比最新的RabbitMQ发⾏版落后很多,可能提供的RabbitMQ版本已经不⽀持.RabbitMQ团队制作了自己的软件包,并使Cloudsmith
进行分发
具体操作可以参考: https://www.rabbitmq.com/docs/install-debian
由于该种方法安装比较复杂, 学习阶段, 咱们使⽤Ubuntu仓库中的版本来安装
2、安装Erlang
RabbitMq需要Erlang语言的支持,在安装rabbitMq之前需要安装erlang
#更新软件包
sudo apt-get update
#安装erlang
sudo apt-get install erlang


22 以上的版本会出现以下这个界面 这个时候按
Esc键就行

出现以下界面就好了

3、查看erlang版本
root@hcss-ecs-0bb1:~# erl
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [asyncthreads:1]
Eshell V10.6.4 (abort with ^G)

退出命令 halt().

Ctrl + c 也能退出
五、安装RabbitMQ
1、安装
#更新软件包
sudo apt-get update
#安装rabbitmq
sudo apt-get install rabbitmq-server
#确认安装结果
systemctl status rabbitmq-server

这里也会出现紫色的,跟上面操作一样 按 Esc 键
2、确认安装结果
表示安装成功

六、安装RabbitMQ管理界面
默认是不安装管理界⾯的
root@hcss-ecs-0bb1:~# rabbitmq-plugins enable rabbitmq_management
#启动3个插件

七、启动服务并访问
1、通过 IP:port 访问界面
http://110.41.51.65:15672/ (15672 为默认端⼝号, 云服务器需要开启端⼝))
默认⽤户名和密码都是: guest
rabbitmq从3.3.0开始禁⽌使⽤guest/guest权限通过除localhost外的访问, 解除方法也有
对阿里云的服务器的防火墙进行设置


2、添加管理员用户
添加用户 admin , 密码: admin
# rabbitmqctl add_user ${账号} ${密码}
rabbitmqctl add_user admin admin

3、给用户添加权限
#rabbitmqctl set_user_tags ${账号} ${角⾊名称}
rabbitmqctl set_user_tags admin administrator

以下角色可选
RabbitMQ⽤户角⾊分为Administrator、Monitoring、Policymaker、Management、Impersonator、None共六种角色
Administrator超级管理员,可登陆管理控制台(启⽤management plugin的情况下),可查看所
有的信息,并且可以对⽤户,策略(policy)进⾏操作Monitoring监控者,可登陆管理控制台(启⽤management plugin的情况下),同时可以查看
rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。Policymaker策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
policy进⾏管理。但⽆法查看节点的相关信息.Management普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
节点信息,也⽆法对策略进⾏管理.Impersonator模拟者,⽆法登录管理控制台。None其他⽤户,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者
4、通过IP:port访问, 并使用刚才设置的用户名和密码登录

重点了解
这里的虚拟机是一个逻辑上的隔离 类似于 mysql 的database
5、通过set设置权限

6、添加用户

添加成功

7、添加虚拟机


使用哪个用户的设置的虚拟机,就对这个有一定的权限


相关文章:
Ubuntu 环境安装 之 RabbitMQ 快速入手
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…...
UE5中实现右键开镜效果
右键之后添加时间轴,然后设置视野即可。Set Field Of View 时间轴设置,第一个点设置0,90度,因为默认的就是90度 第二个点看武器的类型或者倍境来设置,时间就是开镜时间,值越小开镜速度越快,第二个值就是视野…...
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
漏洞简介 pache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 漏洞环境 vulhub/httpd/CVE-2…...
Excel重新踩坑5:二级下拉列表制作;★数据透视表;
0、在excel中函数公式不仅可以写在单元格里面,还可以写在公式里面。 1、二级下拉列表制作: 2、数据透视表: 概念:通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览:在插入选项中有个数据透视表,数…...
力扣--35.搜索插入位置
题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 …...
C# 设计模式(行为型模式):模板方法模式
C# 设计模式(行为型模式):模板方法模式 在开发过程中,我们经常会遇到一类问题:一些操作的整体步骤是固定的,但某些具体步骤的实现会因为场景不同而有所变化。模板方法模式(Template Method Pat…...
Leetcode打卡:设计一个ATM机器
执行结果:通过 题目 2241 设计一个ATM机器 一个 ATM 机器,存有 5 种面值的钞票:20 ,50 ,100 ,200 和 500 美元。初始时,ATM 机是空的。用户可以用它存或者取任意数目的钱。 取款时,…...
【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
在 TCP 协议中,SYN、ACK、FIN、RST、PSH 和 URG 都是控制标志位(Flags),每个标志位对应不同的功能。它们的全称如下: URG:(URGent)紧急 ACK:(ACKnowledgment)确认 PSH:(PuSH)推送 RS…...
【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析
文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…...
【通识安全】应急救护常识23则
一、异物入眼 任何细小的物体或液体,哪怕是一粒沙子或是一滴洗涤剂进入眼中,都会引起眼部疼痛,甚至损伤眼角膜。 急救办法:首先是用力且频繁地眨眼,用泪水将异物冲刷出去。如果不奏效,就将眼皮捏起&#…...
C语言:cJSON将struct结构体与JSON互相转换
文章目录 struct 转 jsonjson 转 struct 文档: https://github.com/DaveGamble/cJSON 项目结构 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 转 json #include "libs/cJSON.h" #include <stdio.h>// defi…...
在Linux中,如何查看和修改网络接口配置?
在Linux中,查看和修改网络接口配置主要依赖于几个命令行工具。这里详细介绍两种传统的命令行方式以及一些图形化工具(前提:系统支持): 一、临时性修改 1. 使用ifconfig命令(部分系统已被弃用)…...
使用深度学习来实现图像超分辨率 综述!
今天给大家介绍一篇图像超分辨率邻域的综述,这篇综述总结了图像超分辨率领域的几方面:problem settings、数据集、performance metrics、SR方法、特定领域应用以结构组件形式,同时,总结超分方法的优点与限制。讨论了存在的问题和挑…...
基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask,vueflask模式的前端和后端之间进行数据的传递通常是借助 API(应用程序编程接口)来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如,前端可能通过发送…...
【Android项目学习】3. MVVMHabit
项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础,整合OkhttpRxJavaRetrofitGlide等流行…...
在Linux中,如何配置负载均衡器以分配网络流量?
NGINX NGINX是一款高性能的HTTP和反向代理服务器,也常用作负载均衡器。它支持多种负载均衡算法,如轮询、加权轮询、IP哈希等。 配置步骤: 安装NGINX:根据您的Linux发行版,使用相应的包管理器安装NGINX。配置负载均衡…...
手机投屏到电视的3种选择:无线本地投屏,无线远程投屏,AirPlay投屏
现在大部分手机投屏都要求连接相同的WiFi,这就意味着手机投屏到电视必须是近距离投屏,稍微远一点就会脱离WiFi连接范围,投屏失败。 如果想将手机远程投屏到安卓电视,要怎样做? 第一步,在手机和安卓电视都安…...
MySQL关联关系理论与实践
MySQL 是一种关系型数据库管理系统,以其高性能、灵活性和易用性在开发者中广受欢迎。在 MySQL 中,数据存储以表格形式存在,表与表之间的关联关系构成了关系型数据库的核心。本篇文章将介绍 MySQL 关联关系的理论基础和常见实践,包括表的类型、主外键的使用,以及连接查询的…...
多模态论文笔记——U-ViT(国内版DiT)
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节,虽然没有后续的DiT在AIGC领域火爆,但为后来的研究奠定了基础,但其开创性的探索值得学习…...
在 IntelliJ IDEA 中开发 GPT 自动补全插件
背景与目标 随着 AI 的发展,GitHub Copilot 等智能代码补全工具在开发者中获得了广泛的应用,极大地提高了编程效率。本篇文章将教你如何开发一个 IntelliJ IDEA 插件,使用 OpenAI 的 GPT API 来实现类似 Copilot 的代码自动补全功能。通过这…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...



