当前位置: 首页 > news >正文

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 ) 消息队列 的意思 , RabbitMQRabbit企业下的⼀个消息队列产品.
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⽤户角⾊分为AdministratorMonitoringPolicymakerManagementImpersonatorNone共六种角色

  1. Administrator 超级管理员,可登陆管理控制台(启⽤management plugin的情况下),可查看所
    有的信息,并且可以对⽤户,策略(policy)进⾏操作
  2. Monitoring 监控者,可登陆管理控制台(启⽤management plugin的情况下),同时可以查看
    rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
  3. Policymaker 策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
    policy进⾏管理。但⽆法查看节点的相关信息.
  4. Management 普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
    节点信息,也⽆法对策略进⾏管理.
  5. Impersonator 模拟者,⽆法登录管理控制台。
  6. 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 机是空的。用户可以用它存或者取任意数目的钱。 取款时&#xff0c…...

【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 文档&#xff1a; https://github.com/DaveGamble/cJSON 项目结构 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 转 json #include "libs/cJSON.h" #include <stdio.h>// defi…...

在Linux中,如何查看和修改网络接口配置?

在Linux中&#xff0c;查看和修改网络接口配置主要依赖于几个命令行工具。这里详细介绍两种传统的命令行方式以及一些图形化工具&#xff08;前提&#xff1a;系统支持&#xff09;&#xff1a; 一、临时性修改 1. 使用ifconfig命令&#xff08;部分系统已被弃用&#xff09;…...

使用深度学习来实现图像超分辨率 综述!

今天给大家介绍一篇图像超分辨率邻域的综述&#xff0c;这篇综述总结了图像超分辨率领域的几方面&#xff1a;problem settings、数据集、performance metrics、SR方法、特定领域应用以结构组件形式&#xff0c;同时&#xff0c;总结超分方法的优点与限制。讨论了存在的问题和挑…...

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask&#xff0c;vueflask模式的前端和后端之间进行数据的传递通常是借助 API&#xff08;应用程序编程接口&#xff09;来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如&#xff0c;前端可能通过发送…...

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…...

在Linux中,如何配置负载均衡器以分配网络流量?

NGINX NGINX是一款高性能的HTTP和反向代理服务器&#xff0c;也常用作负载均衡器。它支持多种负载均衡算法&#xff0c;如轮询、加权轮询、IP哈希等。 配置步骤&#xff1a; 安装NGINX&#xff1a;根据您的Linux发行版&#xff0c;使用相应的包管理器安装NGINX。配置负载均衡…...

手机投屏到电视的3种选择:无线本地投屏,无线远程投屏,AirPlay投屏

现在大部分手机投屏都要求连接相同的WiFi&#xff0c;这就意味着手机投屏到电视必须是近距离投屏&#xff0c;稍微远一点就会脱离WiFi连接范围&#xff0c;投屏失败。 如果想将手机远程投屏到安卓电视&#xff0c;要怎样做&#xff1f; 第一步&#xff0c;在手机和安卓电视都安…...

MySQL关联关系理论与实践

MySQL 是一种关系型数据库管理系统,以其高性能、灵活性和易用性在开发者中广受欢迎。在 MySQL 中,数据存储以表格形式存在,表与表之间的关联关系构成了关系型数据库的核心。本篇文章将介绍 MySQL 关联关系的理论基础和常见实践,包括表的类型、主外键的使用,以及连接查询的…...

多模态论文笔记——U-ViT(国内版DiT)

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…...

在 IntelliJ IDEA 中开发 GPT 自动补全插件

背景与目标 随着 AI 的发展&#xff0c;GitHub Copilot 等智能代码补全工具在开发者中获得了广泛的应用&#xff0c;极大地提高了编程效率。本篇文章将教你如何开发一个 IntelliJ IDEA 插件&#xff0c;使用 OpenAI 的 GPT API 来实现类似 Copilot 的代码自动补全功能。通过这…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...