RabbitMQ简单介绍和安装

RabbitMQ简单介绍

  • 一.RabbitMQ介绍
  • 二.RabbitMQ的作用
    • 1.异步解耦
    • 2.流量削峰
    • 3.消息分发
    • 4.延迟通知
  • 三.RabbitMQ安装(Ubuntu)
    • 1.先安装Erlang
    • 2.安装RabbitMQ
    • 3.安装RabbitMQ的管理界面
    • 4.创建虚拟机
    • 5.端口号信息
  • 四.工作原理图

一.RabbitMQ介绍

RabbitMQ 是一款开源的 消息中间件(Message Broker),遵循 AMQP(Advanced Message Queuing Protocol) 协议标准,专为分布式系统提供高效、可靠的消息通信机制。它通过解耦生产者和消费者、异步处理、流量削峰等能力,成为构建复杂企业级应用的核心组件之一。

RabbitMQ通常用于通信系统通信,系统通信又分为两种:

  • 同步通信:直接调用对方的服务,数据从一端发出后立即就可以达到另一端。
    在这里插入图片描述

  • 异步通信:数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端(容器的一个具体实现就是MQ)在这里插入图片描述

二.RabbitMQ的作用

MQ主要工作是接受并转发消息,在不同的应用场景下,可以展现不同的作用。

1.异步解耦

异步:生产者(发送消息的一方)和消费者(接收消息的一方)无需在同一时间点进行交互。生产者发送消息后即可继续执行后续逻辑,无需等待消费者处理完成。

解耦:生产者和消费者之间不直接依赖对方的接口或状态,而是通过消息队列间接通信。双方只需遵循消息协议,无需了解彼此的实现细节。

简单的举个栗子:
用户进行注册操作时,在这里分成3个步骤,第1个步骤是用户的信息校验,第2个步骤插入数据库,第3个步骤发送邮件。此时前两步已经完成了用户注册操作了,此时第三步就能够解耦出来,将第3步发送给MQ,再让MQ 将信息转发给用户的邮箱。

理解:
用户在前两步已经完成注册了,无论邮件是否能够到达用户的邮箱其实都不太重要,重要的是将用户注册的这个信息存入服务器的数据库当中。

2.流量削峰

流量削峰是 RabbitMQ 的核心应用场景之一,主要用于应对系统突发的高并发请求,避免后端服务因瞬时压力过大而崩溃。其核心思想是通过消息队列暂存请求,让后端服务按照自身处理能力逐步消费。

简单的举个栗子:
当在抢火车票时,点击火车票后提交订单,此时会出现正在排队中请勿退出界面这种弹窗,这种排队就是在使用流量削峰的功能。

3.消息分发

消息分发是 RabbitMQ 的核心能力,它决定了消息如何从生产者传递到消费者。其核心逻辑是:生产者将消息发送到交换机(Exchange),交换机根据规则(路由键、绑定关系)将消息路由到队列,消费者从队列中获取消息。

简单的举个栗子:
用户下了一个订单之后,平台需要向商家发送一个信息,也需要向平台的财部门发送信息,此时不使用MQ的消息分发就只能通过分别调用两个接口来进行消息的通知,并且还可能会涉及到轮询数据库的操作。

4.延迟通知

延迟通知是 RabbitMQ 中实现 定时任务 或 延迟触发业务逻辑 的核心功能,例如订单超时未支付自动取消、提醒消息延迟发送等。由于 RabbitMQ 本身不直接支持延迟队列,需通过 插件 或 死信队列(DLX) 间接实现。

简单举个栗子:
电商平台,用户下了订单之后,如果此时并没有对这个订单进行支付,此时就会有一个时间限制,如果超过这个时间限制,用户还没有对这个订单进行付款,此时这个订单就会自动取消。

三.RabbitMQ安装(Ubuntu)

1.先安装Erlang

首先先进行资源包的更新:sudo apt-get update

安装erlang的语言:sudo apt-get install erlang

检查erlang是否安装成功:erl

如果出现这个就是安装成功,并且通过 halt(). 进行退出,注意是有一个小点在这里插入图片描述

2.安装RabbitMQ

安装RabbitMQ命令:sudo apt-get install rabbitmq-server

确认安装结果的命令:systemctl status rabbitmq-server
在这里插入图片描述

3.安装RabbitMQ的管理界面

安装管理界面的命令 rabbitmq-plugins enable rabbitmq_management

若服务器未启动,则启动命令 sudo service rabbitmq-server start

通过IP和port进行访问 公网IP + 15672进行访问,如果不行需要在云服务器上加安全组开放端口:在这里插入图片描述

rabbitmq从3.3.0开始禁⽌使⽤guest/guest权限通过除localhost外的访问
在这里插入图片描述

添加管理员用户:

rabbitmqctl add_user ${账号} ${密码}

rabbitmqctl add_user admin(账号) admin(密码)

在这里插入图片描述

给用户添加权限:

rabbitmqctl set_user_tags ${账号} ${⻆⾊名称}

rabbitmqctl set_user_tags admin administrator
在这里插入图片描述

权限:
1.Administrator超级管理员,可登陆管理控制台(启⽤managementplugin的情况下),可查看所有的信息,并且可以对⽤⼾,策略(policy)进⾏操作
2. Monitoring监控者,可登陆管理控制台(启⽤managementplugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
3. Policymaker策略制定者,可登陆管理控制台(启⽤managementplugin的情况下),同时可以对policy进⾏管理。但⽆法查看节点的相关信息.
4. Management普通管理者,仅可登陆管理控制台(启⽤managementplugin的情况下),⽆法看到节点信息,也⽆法对策略进⾏管理.
5. Impersonator模拟者,⽆法登录管理控制台。
6. None其他⽤⼾,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者。

登录后的界面:
在这里插入图片描述

红色区域是可以点击来修改当前账号的管理权限等信息:
在这里插入图片描述

Add User则是可以添加新的账号和密码
在这里插入图片描述

4.创建虚拟机

在这里插入图片描述
进行添加一个新的虚拟机:在这里插入图片描述
当前登录的用户是哪个,这个虚拟机的权限就是哪个用户的,通过点击Name可以进行删除:
在这里插入图片描述
在这里插入图片描述

可以通过用户来进行设置虚拟机权限:
在这里插入图片描述

在这里插入图片描述
或者通过虚拟机进行设置用户权限,clear是情况用户权限:在这里插入图片描述

5.端口号信息

amqp 5672:客户端和服务器建立连接的端口号

Http 15672:管理界面的端口号

clustering 25672:集群使用的端口号

在这里插入图片描述

四.工作原理图

producer : 生产者(客户端)

consumer: 消费者(客户端)

中间的都是RabbitMQ的服务器

生产者和消费者通过Connection和RabbitMQ服务器进行连接。
在这里插入图片描述

一个Connection有多个Channel,一个Broker可以有多个虚拟机,Exchange是交换机,Queue是队列。

生产者将消息发送给Exchange(交换机),而不会直接发送给Queue(队列)。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

汇编学习之《call, return指令》

call 指令 call 指令就是调用函数的执行,不过它也是几个指令的组合 第一步通过jmp 函数地址的方式先跳转到函数 第二步通过push 指令将函数地址指令额下一行的指令的地址压入栈中。 我们来验证下 首先打开OllyDbg,导入你的程序,找到一个call 函数&…

接口自动化学习三:参数化parameterize

使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize参数化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…

全面解析 Mybatis 与 Mybatis-Plus:深入原理、实践案例与高级特性对比

全面解析 Mybatis 与 Mybatis-Plus:深入原理、实践案例与高级特性对比 🚀 前言一、基础介绍 ✨1. Mybatis 简介 🔍2. Mybatis-Plus 简介 ⚡ 二、核心区别与高级特性对比 🔎1. 开发模式与配置管理2. 功能丰富度与扩展性3. 自动填充…

【区块链安全 | 第十九篇】类型之映射类型

文章目录 映射类型可迭代映射 映射类型 映射类型使用语法 mapping(KeyType KeyName? > ValueType ValueName?),映射类型的变量声明使用语法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何内置值类型、bytes、st…

动态循环表单+动态判断表单类型+动态判断表单是否必填方法

页面效果: 接口请求到的数据格式: list: [{demandType: "设备辅助功能要求",demandSettingList: [{id: "1907384788664963074",name: "测试表单",fieldType: 0,contentValue: "",vaildStatus: 0, // 0 非必填&a…

蓝桥杯DFS算法题(java)

最大连通 链接: https://www.lanqiao.cn/problems/2410/learning/ 问题描述 小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 或 1 。 1100100000111111101010010010011010101110110110111010011111100100000000010100011011000000100101100011…

解锁物种分布模拟新技能:MaxEnt 模型与 R 语言的奇妙融合

技术点目录 第二章、常用数据检索与R语言自动化下载及可视化方法第三章、R语言数据清洗与特征变量筛选第四章、基于ArcGIS、R数据处理与进阶第五章、基于Maxent的物种分布建模与预测第六章、基于R语言的模型参数优化第七章、物种分布模型结果分析与论文写作 —————————…

三轴云台之相机技术篇

一、结构设计 三轴云台通常由空间上三个互相垂直的框架构成,包括内框(俯仰框)、中框(方位框)和外框(横滚框)。这些框架分别负责控制相机的俯仰运动、方位运动和横滚运动,从而实现对目…

全文 - MLIR Toy Tutorial Chapter 3 :高层次上语言特定的分析和变换

使用 C 风格的模式匹配和重写来优化转置运算 使用 DRR 优化 reshape 运算 创建一种贴近输入语言的语义表示的方言,可以在 MLIR 中分析、变换和优化,这些过程中需要用到高级语言的信息,而且通常是在语言的 AST 上执行的这些过程。…

js逆向入门图灵爬虫练习平台 第四题学习

(base64解码)地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNC8 先找到请求接口带有加密参数: 全局搜索Sign,找到参数生成位置 看到这就一目了然塞,知道参数是怎么构造生成的,不知道这段 JavaScript 代码没关系…

【Flask开发】嘿马文学web完整flask项目第2篇:2.用户认证,Json Web Token(JWT)【附代码文档】

教程总体简介:2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…

[dp5_多状态dp] 按摩师 | 打家劫舍 II | 删除并获得点数 | 粉刷房子

目录 1.面试题 17.16. 按摩师 题解 2.打家劫舍 II 题解 3.删除并获得点数 题解 4.粉刷房子 题解 一定要有这样的能力,碰到一个新题的时候,可以往之前做过的题方向靠! 打家劫舍问题模型: 不能选择相邻的两个数,并且要最终…

基于javaweb的SSM羽毛球会员俱乐部系统场馆课程运动设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

windows下git bash安装SDKMan报错Looking for unzip...Not found

需要在jdk8和jdk17两个版本切换。最简单的是通过手动切换,但切换过程太繁琐,修改环境变量,达到切换目的。于是尝试其它解决方案,最终确实使用sdkman工具。 确保安装了git Git - Downloading Package 记住安装的路径,…

rnn的音频降噪背后技术原理

rnniose: 这个演示展示了 RNNoise 项目,说明了如何将深度学习应用于噪声抑制。其核心理念是将经典的信号处理方法与深度学习结合,打造一个小巧、快速的实时噪声抑制算法。它不需要昂贵的 GPU —— 在树莓派上就能轻松运行。 相比传统的噪声抑制系统&…

剑指Offer(数据结构与算法面试题精讲)C++版——day3

剑指Offer(数据结构与算法面试题精讲)C版——day3 题目一:数组中和为0的3个数字题目二:和大于或等于k的最短子数组题目三:乘积小于k的子数组 题目一:数组中和为0的3个数字 前面我们提到,在一个排…

全新UI好看404页面源码

源码介绍 全新UI好看404页面源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行 效果预览 源码获取 全新UI好看404页面源码

递归典例---汉诺塔

https://ybt.ssoier.cn/problem_show.php?pid1205 #include<bits/stdc.h> #define endl \n #define pii pair<int,int>using namespace std; using ll long long;void move(int n,char a,char b,char c) // n 个盘子&#xff0c;通过 b&#xff0c;从 a 移动到 …

php的高速缓存

部署方法 在我们安装的nginx中默认不支持memc和srcache功能&#xff0c;需要借助第三方模块来让nginx支持此功能。 tar zxf srcache-nginx-module-0.33.tar.gz tar zxf memc-nginx-module-0.20.tar.gz 下载这俩个模块&#xff0c;然后编译安装的时候加进去 编译安装完成之后…

视频设备轨迹回放平台EasyCVR打造视频智能融合新平台,驱动智慧机场迈向数字新时代

一、行业背景​ 随着 5G、AI、物联网、大数据等前沿技术的不断更新换代&#xff0c;交通行业进入数字化转型的高速发展时期。航空业作为交通领域的重要部分&#xff0c;数字化进程从追求速度往注重质量的转变。但机场在数字化转型中面临许多严峻挑战&#xff0c;如现有运营模式…