【学习笔记】RabbitMQ01:基础概念认识以及快速部署

参考资料

  • RabbitMQ官方网站
  • RabbitMQ官方文档
  • 噼咔噼咔-动力节点教程

文章目录

    • 一、认识RabbitMQ
      • 1.1 消息中间件(MQ = Message Queue 消息队列
      • 1.2 主流的消息中间件
      • 1.3 MQ的应用场景
        • 1.3.1 异步处理
        • 1.3.2 系统解耦
        • 1.3.3 流量削峰
        • 1.3.4 日志处理
    • 二、RabbitMQ运行环境搭建
      • 2.1 了解版本兼容问题
      • 2.2 Dokcer安装
        • 2.2.1 docker-compose.yml
        • 2.2.3 启动
      • 2.3 WEB控制台简介
        • 2.3.1 页头信息
      • 2.4 admin页面
        • 2.4.1 用户标签
        • 2.4.2 Virtual hosts (虚拟主机
    • 三、RabbitMQ工作模型
      • 3.1 快速理解工作流程
      • 3.2 快速理解消息中间件 broker 的构成
      • 3.3 消息队列的核心三要素
        • 3.3.1 生产者 producer
        • 3.3.2 消费者 consumer
        • 3.3.3 代理 broker
      • 3.4 RabbitMQ的基础概念名词
        • 3.4.1 连接(Connection )
        • 3.4.2 信道(Channel)
        • 3.4.3 虚拟主机( Virtual host )
        • 3.4.4 交换机( Exchange)
        • 3.4.5 路由键( Routing Key )
        • 3.4.6 绑定( Binding )
        • 3.4.7 队列 ( Queue )
        • 3.4.8 消息(Message )

一、认识RabbitMQ

1.1 消息中间件(MQ = Message Queue 消息队列

简单来说,消息中间件就是指保存数据的一个容器(服务器),可以用于两个系统之间的数据传递

消息中间件一般有三个主要对象:

  • 生产者:producer
  • 消费者:consumer
  • 消息代理(也叫消息队列、消息服务器):broker

生产者发送信息到消息服务器,然后消费者会从消息代理中获取数据并进行处理。关系图如下。

其中,broker作为独立的中间件,是不需要我们手动编写的。

image-20231013154239231

1.2 主流的消息中间件

  • RabbitMQ
  • kafka(丝线交织
  • RocketMQ(java,阿里开源,实战丰富
  • pulsar(最新流行

1.3 MQ的应用场景

1.3.1 异步处理

在企业级java开发中,有很多需要异步线程处理的场景,这些场景如果比较简单且低负载,我们使用多线程,配合线程池即可很好是胜任。

但是如果出现大流量、高并发的数据传递时,使用消息中间件就很有必要了。

比如动力节点提到的这个场景:

image-20231013155009352

  • 按照普通的同步流程,这一系列操作会造成系统的阻塞,用户点击下订单后需要等待全部流程结束
  • 而使用MQ,就可以实现异步处理,生产者只需要处理下订单即可,剩下的交给MQ来管理。
1.3.2 系统解耦

MQ可以作为字面意义的消息中间件,负责调度不同系统之间的交互请求,通过消息进行业务流转(而不是不同的系统之间直接调用)。

  • 起到了类似中转调度中心的作用。
  • 甚至不同的系统也可以使用不同的语言进行开发

image-20231013155514153

1.3.3 流量削峰

用于QPS极高的情况,比如双十一订单量暴增的时候,如果直接将用户的请求打到数据库,则会造成极大的数据库压力。

使用MQ匀速消费可以将QPS降低到一个系统可接受的水平,保证系统的稳定运行。

image-20231013155741427

1.3.4 日志处理

主要是kafka这个服务器来做。

如果系统采用微服务处理,(比如有1000个微服务)每个单独的服务都会有大量的日志,如果要定位异常就需要每台服务器都要翻找日志,kafka解决了大量日志传输的问题,给出了ELK日志解决方案

image-20231013160023706

将所有的日志通过kafka集中到一个地方进行查看。

拓展阅读: ELK日志分析系统

由以下三个中间件组成

  • Elasticsearch
  • Logstash
  • Kibana

具体详解:

https://blog.csdn.net/weixin_49022211/article/details/109514485

https://blog.csdn.net/zkc7441976/article/details/115868050

二、RabbitMQ运行环境搭建

为了快速学习,使用docker快速部署

2.1 了解版本兼容问题

https://www.rabbitmq.com/which-erlang.html

2.2 Dokcer安装

参考原文链接:https://blog.csdn.net/qq_39340792/article/details/117715984

2.2.1 docker-compose.yml
version: '3.1'
services:rabbitmq:restart: alwaysimage: rabbitmq:managementcontainer_name: rabbitmqhostname: rabbitports:- 5672:5672- 15672:15672environment:TZ: Asia/ShanghaiRABBITMQ_DEFAULT_USER: rabbitRABBITMQ_DEFAULT_PASS: 123456volumes:- ./data:/var/lib/rabbitmq- ./conf:/etc/rabbitmq

注意:./conf目录即配置挂载目录需事先创建好,如果未事先创建或是空文件夹启动时会报错。

可以先不挂载该目录启动,然后 通过 docker cp 命令将配置目录拷贝出来。

示例:

docker cp rabbitmq:/etc/rabbitmq ./conf
2.2.3 启动

执行 docker-compose up -d命令启动。

浏览器访问 http://localhost:15672/ 进入RabbitMQ Management 页面。输入上面的用户名和密码登录。

页面如下

image-20231013160756627

2.3 WEB控制台简介

2.3.1 页头信息

标签页分别是

  • 概述 overview
  • 连接 connections
  • 信道 channels
  • 交换机 exchanges
  • 队列 queues
  • 系统配置 admin

image-20231013162329106

image-20231013162358165

2.4 admin页面

2.4.1 用户标签

image-20231013162706952

2.4.2 Virtual hosts (虚拟主机

image-20231013162839713

三、RabbitMQ工作模型

作为rabbitMQ的核心重点,理解工作模型有助于快速上手

image-20231013163409072

3.1 快速理解工作流程

大致的工作流程前面已经提到了——

image-20231013164621655

那么在上图中可以发现生产者是如何具体将消息传达到消费者中的。大致流程简单描述如下

  1. 首先,生产者通过虚拟信道和虚拟主机中的交换机建立连接
  2. 同时,消费者也通过虚拟信道和虚拟主机件的消息队列建立连接
  3. 生产者的消息,通过交换机传递到消息队列中,消费者从消息队列中接受消息

至此完成的消息的传递

3.2 快速理解消息中间件 broker 的构成

视频给了一个很形象的类比。有助于我们理解mq的基本构成

rabbitMQ服务器Mysql服务器
一个服务器可以创建多个不同的虚拟主机一个服务器可以创建多个不同的数据库
一个虚拟机可以有多个不同的消息队列一个数据库可以有多个不同的表格
队列中可以存储多条消息表格中可以存储多条记录

3.3 消息队列的核心三要素

这三要素是所有MQ中间件通用

3.3.1 生产者 producer

发送消息的应用。(可以是java程序,也可以是其他语言的程序

3.3.2 消费者 consumer

接受消息的应用。(可以是java程序,也可以是其他语言的程序

3.3.3 代理 broker

即消息服务器,消息中间件,也叫消息队列。

rabbitMQ server 就是 message broker

3.4 RabbitMQ的基础概念名词

3.4.1 连接(Connection )

连接 RabbitMo 服务器的TCP 长连接

3.4.2 信道(Channel)

连接中的一个虚拟通道,消息队列发送或者接收消息时,都是通过信道进行的;

3.4.3 虚拟主机( Virtual host )

一个虚拟分组,在代码中就是一个字符串。

当多个不同的用户使用同一个RabbitMQ 服务时,可以划分出多个 Virtual host。每个用户在自己的 Virtual host 创建 exchange/queue 等;

(分类比较清晰、相互隔离)

3.4.4 交换机( Exchange)

交换机负责从生产者接收消息,并根据交换机类型分发到对应的消息队列中,起到一个路由的作用

3.4.5 路由键( Routing Key )

交换机根据路由键来决定消息分发到哪个队列,路由键是消息的目的地址

也就是说其实在每一个channel中都有一个路由key,通过这个key就可以快速定位到具体的队列。避免了消息乱发队列的情况。

3.4.6 绑定( Binding )

绑定是队列和交换机的一个关联连接(关联关系)

3.4.7 队列 ( Queue )

存储消息的缓存队列

3.4.8 消息(Message )

由生产者通过 Rabbitmq 发送给消费者的信息; (消息可以任何数据字符串、user 对象,json 串等等)

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

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

相关文章

驱动开发day2

任务&#xff1a;使用模块化编译安装驱动实现三盏LED灯的亮灭 驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h>#define PHY_RCC 0X50000A28 #define PH…

神经网络中的反向传播:综合指南

塔曼纳 一、说明 反向传播是人工神经网络 &#xff08;ANN&#xff09; 中用于训练深度学习模型的流行算法。它是一种监督学习技术&#xff0c;用于调整网络中神经元的权重&#xff0c;以最小化预测输出和实际输出之间的误差。 在神经网络中&#xff0c;反向传播是计算损失函数…

基于 Qt UDP通信局域网通信

前言 该例程经过实际验证可以正常使用,只简单的使用UDP中的单播模式(一对一), 所用测试系统在同一局域网,其中: QT版本:5.12 PC端UDP模式:单播 UDP通信目标:基于STM32F4+LWIP协议的以太网接口 调试助手: 虚拟串口+串口助手+UDP和TCP调试助手[编程人员必备]一、UDP通…

MySQL数据库下载与安装使用

文章目录 MySQL数据库下面是各个版本完整的生命周期。下载MySQL安装包安装和使用MySQL一些基础MySQL使用命令 MySQL数据库 这里我选择的是免安装绿色解压版本 现在各位开发者使用的MySQL&#xff0c;大部分版本都是 5.7&#xff0c;根据官方说明&#xff0c;MySQL 5.7 将于 202…

18.项目开发之前端项目搭建测试

项目开发之前端项目搭建测试 解压文件&#xff0c;将前端项目目录&#xff0c;拖拽到HBuilder中 前端项目QuantTrade_vue地址&#xff1a;传送门 后端项目QuantTrade地址&#xff1a; https://pan.baidu.com/s/1GF45B0QepApH8JbRIOLY7w?pwd1016 开启idea的项目&#xff0c;先…

智慧油气田方案:视频+AI识别,助力油气田生产与管理智能化转型

一、背景与挑战 根据《“十四五”能源领域科技创新规划》指出&#xff0c;要推动核心技术创新突破&#xff0c;推动煤炭、油田、电厂、电网等传统行业与数字化、智能化技术深度融合。我国油田产业已经摆脱了早期粗放式增长的阶段&#xff0c;需要更加精细化、智慧化、科学化的…

PyQt学习笔记-获取Hash值的小工具

目录 一、概述1.1 版本信息&#xff1a;1.2 基本信息&#xff1a;1.2.1 软件支持的内容&#xff1a;1.2.2 支持的编码格式 1.3 软件界面图 二、代码实现2.1 View2.2 Controller2.3 Model 三、测试示例 一、概述 本工具居于hashlibPyQtQFileDialog写的小工具&#xff0c;主要是…

django建站过程(2)创建第一个应用程序页面

创建第一个应用程序页面 设置第一个页面【settings.py,urls.py,views.py】settings.pyurls.pyviews.py django是由一系列应用程序组成&#xff0c;协同工作&#xff0c;让项目成为一个整体。前面已创建了一个应用程序baseapp,使用的命令 python manage.py startapp baseapps这…

机器学习,神经网络中,自注意力跟卷积神经网络之间有什么样的差异或者关联?

如图 6.38a 所示&#xff0c;如果用自注意力来处理一张图像&#xff0c;假设红色框内的“1”是要考虑的像素&#xff0c;它会产生查询&#xff0c;其他像素产生 图 6.37 使用自注意力处理图像 键。在做内积的时候&#xff0c;考虑的不是一个小的范围&#xff0c;而是整张图像的…

发展新能源汽车加快充换电基础设施建设实施方案-安科瑞黄安南

摘要&#xff1a;为深入贯彻落实《国务院办公厅关于印发新能源汽车产业发展规划&#xff08;2021—2035年&#xff09;的通知》&#xff08;国办发 ﹝2020﹞39号&#xff09;、《国家发展改革委等部门关于进一步提升电动汽车充电基础设施服务保障能力的实施意见》&#xff08;发…

【电子通识】USB接口三大类型图册

基本概念 不同时期的USB接口有不同的类型&#xff0c;USB接口分为插头和插座&#xff1a; 插头&#xff0c;plug&#xff0c;对应的也叫公口&#xff0c;即插别人的。 插座&#xff0c;receptacle&#xff0c;对应也叫做母口&#xff0c;即被插的。 USB的接口类型&#xff0…

VMware下linux中ping报错unknown host的解决办法

一、错误截图 二、解决办法 2.1 按照步骤查看本机虚拟IP 依次点击&#xff1a;【编辑】》【虚拟网络编辑器】&#xff0c;选中NET模式所属的行&#xff0c;就能看到子网地址。 比喻&#xff0c;我的子网地址是&#xff1a;192.168.18.0 那么&#xff0c;接下来要配置的linux…

根据pid查看jar包(windows)

打开jdk/bin/jvisualvm.exe,根据pid找到jar包的主启动类,jdk14以后不再默认使用,官网下载,也可以使用老版本的查看

如果Domino上的邮件无法直接发送到@outlook.com

大家好&#xff0c;才是真的好。 目前将Domino仅仅作为邮件服务器的企业用户还不少。如果Domino服务器版本比较新&#xff08;例如版本为11.0.x、12.0.x等&#xff09;&#xff0c;外发邮件时&#xff0c;没有通过邮件网关中转邮件&#xff0c;而是直接发送到Internet互联网上…

未来数字化转型发展的前景如何,企业又该怎么实现?

商业世界有一个认识&#xff0c;互联网只用看中国和美国&#xff0c;其他国家已经被远远甩在了后边&#xff0c;移动互联网的出现更是将互联网的跨地域、跨国、互联等属性发挥到了极致&#xff0c;让众多互联网巨头开启了争夺世界各国市场的脚步。 移动互联网的飞速发展以及物…

VMware——Window11安装VMware17(图解版)

目录 一、VMware17百度云下载二、安装三、注册 一、VMware17百度云下载 下载链接&#xff1a;https://pan.baidu.com/s/1dv_Y7ig2LUFxeHvrG2rOTA 提取码&#xff1a;elih 二、安装 下载 VMware-workstation-full-17.0.2-21581411.exe 安装包后&#xff0c;右键以管理员身份运…

软考-访问控制技术原理与应用

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 by 2023年10月 访问控制概念 访问控制是计算机安全的一个重要组成部分&#xff0c;用于控制用户或程序如…

PHP的学习入门建议

学习入门PHP的步骤如下&#xff1a; 确定学习PHP的目的和需求&#xff0c;例如是为了开发网站还是为了与数据库交互等。学习PHP的基础语法和程序结构&#xff0c;包括变量、数据类型、循环、条件等。学习PHP的面向对象编程&#xff08;OOP&#xff09;概念和技术。学习与MySQL…

测试用例编写详解

一、前言 测试用例的编写需要按照一定的思路进行&#xff0c;而不是想到哪写到哪&#xff0c;一般测试机制成熟的公司都会有公司自己自定义的测试用例模板&#xff0c;以及一整套的测试流程关注点&#xff0c;当然我们自己在测试生涯中也应当积累一套自己的测试框架&#xff0…

【Proteus仿真】【Arduino单片机】蜂鸣器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;蜂鸣器播放音乐。 二、软件设计 /* 作者&#xff1a;嗨小易&#xff08;QQ&#x…