小白学习手册:轻松理解MQ消息队列
目录
# 开篇
RabbitMQ介绍
通讯概念
1. 初始MQ及类型
2. MQ的架构
2.1 RabbitMQ的结构和概念
2.2 RabbitMQ消息流示意图
3. MQ下载使用
3.1 Docker下载MQ参考
3.2 进入RabbitMQ
# 开篇
MessagesQueue 是一个抽象概念,用于描述消息队列系统的一般特性和功能。而 RabbitMQ 是一个具体的消息队列实现,是开源的、基于 AMQP(高级消息队列协议)的消息代理软件。换句话说,RabbitMQ 是一种消息队列的实现,而 MessagesQueue 是消息队列这一概念的抽象表达。
消息队列是一种在应用程序之间传递消息的通信方式,常用于解耦系统组件、异步处理任务、实现负载均衡和削峰填谷等场景。MessagesQueue 这个术语可能用于描述各种消息队列系统,如 RabbitMQ、Kafka、ActiveMQ 等,以及它们之间的通用概念和特性,例如消息的发布与订阅、消息的持久化、消息路由、消息确认机制等。
总之,MessagesQueue 是对消息队列系统的抽象描述,而 RabbitMQ 是其中的一个具体实现。
RabbitMQ介绍
RabbitMQ是一种分布式消息队列中间件。它通过在不同的应用程序之间传递消息来实现解耦和异步通信。RabbitMQ基于AMQP(高级消息队列协议)实现,可以在分布式系统中实现可靠的消息传递。它可以在不同的进程、不同的服务器之间进行消息的传递和交换,实现了高可用性、可伸缩性和可靠性。通过使用RabbitMQ,可以将不同的应用程序、服务或者模块进行解耦,提高系统的可扩展性和可维护性。
通讯概念
- 同步通讯:
- 一次只能单人访问,不接受双人访问,就好比手机打电话,一次只能跟一个人通话,下一个人来了,就需要等到第一个人打完电话后,第二个人才能继续通讯。
- 异步通讯:
- 就好比发送的消息,我微信发送一条消息,不需要别人去确认,我还可以给其他人也发送消息,实现多人通知,跟打电话资源被占用不一样,我可以实现异步的通讯。
1. 初始MQ及类型
- MQ (MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也是事件驱动架构中的Broker。
- MQ队列有许多特性不一的队列类型,比如常用的RabbitMQ,Act..,Roc...,kafka
| 特性 | RabbitMQ | ActiveMQ | RocketMQ | Kafka |
|---|---|---|---|---|
| 公司/社区 | Rabbit | Apache | 阿里 | Apache |
| 开发语言 | Erlang | Java | Java | Scala & Java |
| 协议支持 | AMQP, XMPP, SMTP, STOMP | OpenWire, STOMP, REST, XMPP, AMQP | 自定义协议 | 自定义协议 |
| 可用性 | 高 | 一般 | 高 | 高 |
| 单机吞吐量 | 一般 | 差 | 高 | 非常高 |
| 消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |
| 消息可靠性 | 高 | 一般 | 一般 | 一般 |
2. MQ的架构
2.1 RabbitMQ的结构和概念
- Publisher(生产者):
- 生产者发送消息到虚拟机里的交换机(Exchange)。
- 发布消息的角色,相当于消息的发送者。
- Exchange(交换机):
- 交换机接收到生产者发送的消息后,根据某种路由规则将消息发送到一个或多个队列(Queue)。
- Exchange有几种类型,常见的包括:
- Direct Exchange:消息根据具体的路由键被投递到队列。
- Fanout Exchange:消息广播到所有绑定到该交换机的队列。
- Topic Exchange:消息根据通配符匹配路由键被投递到队列。
- Headers Exchange:根据消息头属性进行路由。
- Queue(队列):
- 队列存储从交换机接收到的消息,直到消费者进行处理。
- 队列有可能被多个消费者并发消费。
- Consumer(消费者):
- 消费者从队列中获取消息并进行处理。
- 相当于消息的接收者。
- Virtual Host(虚拟主机):
- 虚拟主机是逻辑上的消息分组,用于多租户和权限管理。
- 一个RabbitMQ Server中可以有多个Virtual Host,每个Virtual Host包含自己的队列、交换机和绑定关系。
- RabbitMQ Server(Broker):
- RabbitMQ的核心,负责接受、存储、转发消息。
- 管理并维护所有的队列、交换机和虚拟主机。
2.2 RabbitMQ消息流示意图
Publisher -> Exchange -> Queue -> Consumer
- 生产者(Publisher):负责生产和发送消息。
- 交换机(Exchange):根据路由键或其他规则将消息路由到相应的队列。
- 队列(Queue):存储消息,等待消费者取走。
- 消费者(Consumer):从队列中取走并处理消息。
这个架构设计使得RabbitMQ非常适合于解耦和异步处理系统中的消息传递,保证消息的可靠传输和处理。

3. MQ下载使用
3.1 Docker下载MQ参考
# 1.使用docker查询rabbitmq的镜像
docker search rabbitmq# 2.安装镜像
docker pull rabbitmq# 3.运行mq:
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
3.2 进入RabbitMQ
- 访问地址:http://linuxip:15672
- 登录账号密码默认:guest

相关文章:
小白学习手册:轻松理解MQ消息队列
目录 # 开篇 RabbitMQ介绍 通讯概念 1. 初始MQ及类型 2. MQ的架构 2.1 RabbitMQ的结构和概念 2.2 RabbitMQ消息流示意图 3. MQ下载使用 3.1 Docker下载MQ参考 3.2 进入RabbitMQ # 开篇 MessagesQueue 是一个抽象概念,用于描述消息队列系统的一般特性和功能…...
electron线上更新
一、安装electron-updater npm install --save electron-updater二、在main.js中引入使用 import { autoUpdater } from electron; if (!isDev) {const serverUrl https://your-update-server.com; // 自定义更新服务器地址或GitHub Releases地址autoUpdater.setFeedURL(${…...
谈谈检测浏览器类型
前几天被问到如何检测浏览器类型,我突然发现我对此并不了解,之前的项目中也没有使用到过,只隐约记得通过一个自带的方法即可获取。所以今天特意来仔细补习一下。 核心:navigator.userAgent 1.正则表达式 2.引用外部库 3.判断浏…...
Django 和 Django REST framework 创建对外 API
1. 环境准备 确保你已经安装了 Python 和 Django。如果尚未安装 Django REST framework,通过 pip 安装它: pip install djangorestframework 2. 创建 Django 项目 如果你还没有 Django 项目,可以通过以下命令创建: django-ad…...
数据结构之“刷链表题”
🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、相交链表 题目链接 大致思路 代码实现 二、环形链表1 题目链接 大致思路 代码实现 三、环形链表2 题目链接 大致思路 代码实…...
复分析——第9章——椭圆函数导论(E.M. Stein R. Shakarchi)
第 9 章 椭圆函数导论 (An Introduction to Elliptic Functions) The form that Jacobi had given to the theory of elliptic functions was far from perfection; its flaws are obvious. At the base we find three fundamental functions sn, cn and dn. These functio…...
使用kubeadm安装k8s并部署应用
安装k8s 1. 准备机器 准备三台机器 192.168.136.104 master节点 192.168.136.105 worker节点 192.168.136.106 worker节点2. 安装前配置 1.基础环境 ######################################################################### #关闭防火墙: 如果是云服务器&…...
springMVC学习
概述 Spring MVC(Model-View-Controller,模型-视图-控制器)是Spring框架的一部分,用于构建基于Java的Web应用程序。它遵循MVC设计模式,分离了应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑)&…...
深入探讨光刻技术:半导体制造的关键工艺
前言 光刻(Photolithography)是现代半导体制造过程中不可或缺的一环,它的精度和能力直接决定了芯片的性能和密度。本文将详细介绍光刻技术的基本原理、过程、关键技术及其在半导体制造中的重要性。 光刻技术的基本原理 光刻是一种利用光化…...
CesiumJS【Basic】- #042 绘制纹理线(Primitive方式)
文章目录 绘制纹理线(Primitive方式)1 目标2 代码2.1 main.ts3 资源文件绘制纹理线(Primitive方式) 1 目标 使用Primitive方式绘制纹理线 2 代码 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var...
代码随想录第38天|动态规划
1049. 最后一块石头的重量 II 参考 备注: 当物体容量也等同于价值时, 01背包问题的含义则是利用好最大的背包容量sum/2, 使得结果尽可能的接近或者小于 sum/2 等价: 尽可能的平分成相同的两堆, 其差则为结果, 比如 (abc)-d, (ac)-(bd) , 最终的结果是一堆减去另外一堆的和, 问…...
java生成excel,uniapp微信小程序接收excel并打开
java引包,引的是apache.poi <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency> 写一个测试类,把excel输出到指定路径 public s…...
sam_out 目标检测的应用
缺点参考地址训练验证模型解析 缺点 词表太大量化才可 参考地址 https://aistudio.baidu.com/projectdetail/8103098 训练验证 import os from glob import glob import cv2 import paddle import faiss from out_yolo_model import GPT as GPT13 import pandas as pd imp…...
VLAN原理与配置
AUTHOR :闫小雨 DATE:2024-04-28 目录 VLAN的三种端口类型 VLAN原理 什么是VLAN 为什么使用VLAN VLAN的基本原理 VLAN标签 VLAN标签各字段含义如下: VLAN的划分方式 VLAN的划分包括如下5种方法: VLAN的接口链路类型 创建V…...
使用Spring Boot实现RESTful API
使用Spring Boot实现RESTful API 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨如何利用Spring Boot框架实现RESTful API,这是现…...
中英双语介绍美国常春藤联盟( Ivy League):八所高校
中文版 常春藤联盟简介 常春藤联盟(Ivy League)是美国东北部八所私立大学组成的高校联盟。虽然最初是因体育联盟而得名,但这些学校以其学术卓越、历史悠久、校友杰出而闻名于世。以下是对常春藤联盟的详细介绍,包括其由来、成员…...
【计算机网络】常见的网络通信协议
目录 1. TCP/IP协议 2. HTTP协议 3. FTP协议 4. SMTP协议 5. POP3协议 6. IMAP协议 7. DNS协议 8. DHCP协议 9. SSH协议 10. SSL/TLS协议 11. SNMP协议 12. NTP协议 13. VoIP协议 14. WebSocket协议 15. BGP协议 16. OSPF协议 17. RIP协议 18. ICMP协议 1…...
java实现http/https请求
在Java中,有多种方式可以实现HTTP或HTTPS请求。以下是使用第三方库Apache HttpClient来实现HTTP/HTTPS请求的工具类。 优势和特点 URIBuilder的优势在于它提供了一种简单而灵活的方式来构造URI,帮助开发人员避免手动拼接URI字符串,并处理参…...
NC204871 求和
链接 思路: 对于一个子树来说,子树的节点就包括在整颗树的dfs序中子树根节点出现的前后之间,所以我们先进行一次dfs,用b数组的0表示区间左端点,1表示区间右端点,同时用a数组来标记dfs序中的值。处理完dfs序…...
git克隆代码warning: could not find UI helper ‘git-credential-manager-ui‘
git克隆代码warning: could not find UI helper ‘git-credential-manager-ui’ 方案 git config --global --unset credential.helpergit-credential-manager configure...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
