RabbitMQ:1.概述及安装

概述

AMQP协议

MQ

Message Queue(消息队列)是在消息的传输过程中保存消息的容器,多用于系统之间的异步通信

AMQP

Advanced Message Queuing Protocol(高级消息队列协议)是一个网络协议,2006年AMQP规范发布【类比HTTP】

专门为消息中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受不同中间件产品,不同开发语言等条件的限制

AMQP工作过程

生产者将消息发布到交换机,交换机根据规则将消息分发给交换机绑定的队列,队列再将消息投递给订阅了此队列的消费者

RabbitMQ

简介

RabbitMQ是使用Erlang语言编写的

RabbitMQ为什么使用信道而不直接使用TCP连接通信?

1.TCP连接的创建和销毁开销特别大。创建需要3次握手,销毁需要4次分手,高峰时每秒成千上万条TCP连接的创建会造成资源巨大的浪费

2.操作系统每秒处理TCP连接数也是有限制的,会造成性能瓶颈

3.如果一条线程使用一条信道,一条TCP链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈

RabbitMQ核心概念

Producer【生产者】
消息的生产者,也是一个向交换机发布消息的客户端应用程序Connection【连接】
生产者/消费者和RabbitMQ服务器之间建立的TCP连接Channel【信道】
信道,是TCP里面的虚拟连接,一条TCP连接中可以创建多条信道,增加连接效率
无论是发布消息、接收消息、订阅队列都是通过信道完成的Broker【RabbitMQ服务器】
消息队列服务器实体,即RabbitMQ服务器Virtual host【虚拟主机】
出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中
每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换机、绑定和权限机制
当多个不同的用户使用同一个RabbitMQ服务器时,可以划分出多个虚拟主机
RabbitMQ默认的虚拟主机路径是/Exchange【交换机】
用来接收生产者发送的消息,并根据分发规则,将这些消息分发给服务器中的队列中,不同的交换机有不同的分发规则Queue【消息队列】
用来保存消息直到发送给消费者,它是消息的容器,也是消息的终点
消息一直在队列里面,等待消费者链接到这个队列将其取走Binding【虚拟连接】
消息队列和交换机之间的虚拟连接,绑定中包含路由规则,绑定信息保存到交换机的路由表中,作为消息的分发依据Consumer【消费者】
消息的消费者,表示一个从消息队列中取得消息的客户端应用程序

RabbitMQ场景

1.抢红包、秒杀活动、抢火车票等
这些业务场景都是短时间内需要处理大量请求,如果直接连接系统处理业务,会耗费大量资源,有可能造成系统瘫痪
而使用MQ后,可以先让用户将请求发送到MQ中,MQ会先保存请求消息,不会占用系统资源,且MQ会进行消息排序,先请求的秒杀成功,后请求的秒杀失败。2.消息分发
如电商网站要推送促销信息,该业务耗费时间较多,但对时效性要求不高,可以使用MQ做消息分发3.数据同步
假如我们需要将数据保存到数据库之外,还需要一段时间将数据同步到缓存(如Redis)、搜索引擎(如Elasticsearch)中。
此时可以将数据库的数据作为消息发送到MQ中,并同步到缓存、搜索引擎中。4.异步处理
在电商系统中,订单完成后,需要及时的通知子系统(进销存系统发货,用户服务积分,发送短信)进行下一步操作。
为了保证订单系统的高性能,应该直接返回订单结果,之后让MQ通知子系统做其他非实时的业务操作。这样能保证核心业务的高效及时。5.离线处理
在银行系统中,如果要查询近十年的历史账单,这是非常耗时的操作。如果发送同步请求,则会花费大量时间等待响应
此时使用MQ发送异步请求,等到查询出结果后获取结果即可

docker安装

拉取镜像

docker pull docker.io/macintoshplus/rabbitmq-management

创建容器

docker run -d  --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 8042:15672 -p 8041:5672 docker.io/macintoshplus/rabbitmq-management

相关接口

rabbitmq【8041】http://192.168.66.103:8041

rabbitmq-management【8042】【guest/guest】:http://192.168.66.103:8042

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

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

相关文章

基于单片机的公交车IC卡操作系统的设计

目 录 摘 要 III Abstract IV 前 言 1 第一章 绪论 2 1.1 设计的背景和意义 2 1.2 设计的现状和发展 2 1.3 设计的目的与意义 2 第二章 总体设计 4 2.1 总体方案的设计与实现 4 2.1.1 主要设计的内容 4 2.1.2 系统的总体设计 4 2.2 系统方案论证 5 2.2.1 单片机的选择 6 2.2.2…

Ubuntu虚拟机的IP总频繁变化,导致Xshell断开连接

文章目录 一、IP变化的原因二、解决方法:固定IP三、参考文章 一、IP变化的原因 1.DHCP协议 虚拟机系统(Ubuntu、CentOS、UOS等Linux系统)启动后,加入本地局域网网络时,会向本地网络申请租约一个IP地址,租约时长不定。我这里租约时…

独立开发的轻量级简洁开源论坛BBS PHP源码 – 2023新版发布

最新的轻量级开源论坛php源码发布啦!这是一款独立开发的论坛系统,可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者,这款论坛系统非常适合你入门学习。不过,需要注意的是,由于它并没有进行商业化改造&#xf…

如何正确地设置Outlook SMTP发送电子邮件?

Outlook SMTP发送邮件配置方法?Outlook怎么开启SMTP? 在使用Outlook发送邮件时,正确设置SMTP服务器是确保邮件能够顺利发送的关键步骤。接下来,就让AokSend一起探讨如何正确地设置Outlook SMTP发送电子邮件吧! Outlo…

Notepad++从文件夹查找文本内容

目录 一、背景二、Notepad搜索2.1 测试用例2.2 操作说明 一、背景 在日常的办公、学习或编程中,我们时长会遇到需要在大量文件中搜索特定文本内容的情况: 无论是快速定位某个项目中的代码片段;还是检索文档资料库中的相关信息等。 掌握如何…

义乌购关键字搜索API接口技术详解与代码示例

义乌购关键字搜索API接口技术详解与代码示例 在电子商务蓬勃发展的今天,义乌购作为国内知名的批发市场平台,为广大商家和消费者提供了丰富的商品资源。为了方便开发者快速接入义乌购平台,实现商品信息的搜索与获取,义乌购开放了关…

音频读取之wave和liborsa

wave 常见的语音信号处理python库有librosa, scipy, soundfile等等。wave库是python的标准库,对于python来说相对底层,wave不支持压缩/解压,但支持单声道/立体声语音的读取。 读取音频 import wave #导入库file_path D:/ba.wav #文件路径…

Vue2 + node.js项目

1、Vue2 vue2主要功能包括登入、退出、用户权限、表格的增删改查、文件下载。 Vue2项目地址https://gitee.com/www6/finance1.git 2、node.js编写后端接口 2.1、项目初始化 后端地址https://gitee.com/www6/finance-backend.git 创建项目 npm install -g koa-generator …

有趣的前端知识(三)

推荐阅读 有趣的前端知识(一) 有趣的前端知识(二) 文章目录 推荐阅读JS内置对象JS外部对象BOM模型history对象screen对象navigator对象 DOM(文档对象模型)DOM的方法(对于节点的操作&#xff09…

【打工日常】docker部署快速开发海报工具

一、fastposter海报生成器介绍 fastposter 是一款海报生成器,它能够让您快速、轻松地创建各种类型的海报。 只需上传一张背景图,然后在需要的位置添加文字、图片、二维 、头像等组件。点击生成代码按钮,直接获取各种语言 SDK 的调用代码&…

智能物流新纪元:分布式I/O模块重塑仓储自动化

随着工业4.0概念的深入人心,物流行业正在经历前所未有的变革。在这个过程中,物流企业必须积极走向工业自动化、智能化,进而提高物流效率,降低物流成本,以便更好地满足客户和市场的需求。智能物流、仓库自动化已然是趋势…

Java实现PDF文字内容识别,结合OCR实现PDF图片实现

使用插件:UMI-OCR、PDFBOX 实现思路:通过PDFBOX识别PDF文字,如果是图片,则识别不出来,再调用OCR进行识别返回文字;OCR识别较慢,长图识别不出来,目前HTTP方式只支持图片格式&#xf…

【设计模式】二、UML 类图与面向对象设计原则 之 UML概述

二、UML 类图与面向对象设计原则 (一)UML 类图 UML 概述类与类的UML图示类之间的关系 (二)面向对象设计原则 单一职责原则(Single Responsibility Principle, SRP)开闭原则(Open-Closed Princip…

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕 硬件平台 AT32A403A Board开发板 1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01 产品介绍 推荐一个屏幕资料参考网站 http://www.lcdwiki.com/1.28inch_IPS_Module 1.28寸圆形IPS彩屏&…

C语言——动态内存分配

前言:通过前面的学习,我们知道C语言中在内存中开辟空间的方法有:变量和数组。既然拥有了开辟空间的方法,我们为什么还要学习动态内存分配呢? int val 20; //在内存中开辟四个字节的空间 int arr[10] { 0 }; //在内…

【金三银四】掌趣科技24.3.7 H项目 服务端开发笔试题

考试题型: 不定项选择题 10 道 , 填空题 10 道 , 问答题 2 道 , 编程题 4 道 目录 不定项选择题 10 道填空题 10 道问答题 2 道编程题 4 道 不定项选择题 10 道 在TCP协议中,发送方的窗口大小是由两个关键因素共同决定…

鸿蒙 Harmony 初体验

前言 看现在网上传得沸沸扬扬的鸿蒙,打算弄个 hello world 玩一下, 不然就跟不上时代的发展了 环境安装 我的环境 Windows 11 家庭中文版HarmonyOS SDK (API 9)DevEco Studio (3.1.1 Release)Node.js (16.19.1) 开发IDE下载 官方下载链接 配置 nodejs 这里帮…

Opencascade基础教程(9):切换视图

1、切换视图 1、1 增加视图切换按钮,并添加消息响应函数。 void COCCDemoView::OnButtonFrontview() {//前视图m_View->SetProj(V3d_Yneg);m_View->FitAll(); }void COCCDemoView::OnButtonRearview() {//后视图m_View->SetProj(V3d_Ypos);m_View->Fit…

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略,围绕"云-管-端"协同的新ICT技术架构,打造的业界覆盖ICT领域最广的认证体系,包含"ICT技术架构认证"、"ICT开发者…

学习JAVA的二十二天(基础)

目录 网络编程 三要素: IP InetAddress类 端口号 协议 UDP协议 TCP协议 前言:学习JAVA的第二十一天(基础)-CSDN博客 网络编程 在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 三要素:…