RabbitMQ基础概念

news2024/12/28 19:42:45

文章目录

  • RabbitMQ介绍
    • AMQP
    • Erlang
  • 架构模型
    • Publisher
    • Connection
    • Channel
    • Virtual Host
    • Exchange
    • Binding
    • Consumer

RabbitMQ介绍

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

AMQP

AMQ(高级消息队列协议)是一种消息传递协议,它使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信。
消息代理从发布者(发布消息的应用程序,也称为生产者)接收消息,并将其路由到消费者(处理消息的应用)。由于它是一个网络协议,发布者、消费者和代理都可以驻留在不同的机器上。

在这里插入图片描述

Erlang

Erlang是一种通用的面向并发的编程语言,可以充分发挥CPU的性能,相对于其他MQ(Kafka、RocketMQ)延迟是最低的。

架构模型

在这里插入图片描述

Publisher

Publisher为发送消息的程序,发布消息时发布者可以指定各种消息属性(消息元数据)。在发布消息时通常会遇到一下问题:

  • 网络不可靠时可能无法确定消息是否发送成功,AMQP具有重试、confirm、return机制保证消息发送成功。
  • 在某些情况下,例如,当消息无法路由时,消息可能会返回给发布者、丢弃,或者如果代理实现了扩展,则将其放入所谓的“死信队列”。

Connection

AMQP是一种应用程序级协议,它使用TCP进行可靠传输。

Channel

一些应用程序需要多个连接到代理上,然而,同时保持多个TCP连接打开是不可取的,因为这样做会消耗系统资源并使配置防火墙更加困难。AMQP连接可以被认为是“共享单个TCP连接的轻量级连接”的信道复用。通道只存在于连接的上下文中,而不单独存在,当一个连接关闭时,它上的所有通道都会关闭。对于使用多个线程/进程进行处理的应用程序,很常见的做法是为每个线程/进程打开一个新通道,而不在它们之间共享通道。

Virtual Host

为了能够托管多个隔离的“环境”(用户组、交换机、队列等),AMQP包含虚拟主机(vhosts)的概念。它们类似于许多流行Web服务器使用的虚拟主机,并提供AMQP实体所在的完全隔离的环境。客户端指定在连接期间要使用的vhost。

Exchange

交换机接收消息并将其路由到零个或多个队列中。使用的路由算法取决于交换类型和绑定的规则。AMQP提供四种交换机类型:

  • Direct exchange:直接交换根据消息路由向队列传递消息。直接交换是消息单播路由的理想选择(尽管它们也可以用于多播路由)。
    在这里插入图片描述

  • Fanout exchange:广播交换将消息路由到绑定到它的所有队列,并忽略路由密。如果N个队列绑定到广播交换机,则当向该交换机发布新消息时,该消息将传递给所有N个队列。

在这里插入图片描述

  • Topic exchange:主题交换基于消息路由和用于将队列绑定到交换的模式之间的匹配,将消息路由到一个或多个队列。主题交换类型通常用于实现各种发布/订阅模式变体。
    在这里插入图片描述

Binding

绑定是交换用来将消息路由到队列的规则。为了指示交换机E将消息路由到队列Q,Q必须绑定到E。

Consumer

在队列中存储消息是无用的,除非消费者可以使用它们。在AMQP模型中,消费者有两种方法可以做到这一点:

  • 订阅并向他们发送消息。这是推荐选项
  • 轮询(“拉API”):这种方式效率很低,在大多数情况下应该避免

同时消费者可以对消息做一下处理:

  • 确认消息:AMQP为消费者提供了两种确认方式手动和自动。当消息被确认消费后代理应该从队列中删除消息。
  • 拒绝消息:当消费者应用程序接收到消息时,该消息的处理可能会成功,也可能不会成功。消费者可以通过拒绝消息来向代理指示消息处理失败。当拒绝消息时,应用程序可以要求放弃或重新排队。
  • 否认消息:与拒绝消息类似,不同的是拒绝消息无法拒绝多条消息,针对此情况AMQP提供否认消息方案。

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

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

相关文章

Qt-数据库开发-事务提交(3)

Qt-数据库开发-通过QSqlTableModel显示和修改数据,开启事务 文章目录Qt-数据库开发-通过QSqlTableModel显示和修改数据,开启事务1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容👉个人内容分类汇总 👈👉数据库…

毕设选题推荐基于python的django框架的疫苗预约接种管理系统

💖🔥作者主页:计算机毕设老哥🔥 💖 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 Java实战项目专栏 Python实…

新型网络接入控制技术

1.NAC技术 1.1简介 网络接入控制(Network Access Control,简称NAC)是由思科(Cisco)主导的产业级协同研究成果,NAC可以协助保证每一个终端在进入网络前均符合网络安全策略。NAC技术可以提供保证端点设备在接入网络前完全遵循本地网络内需要的安全策略&a…

list容器模拟实现

📋 个人简介 💖 作者简介:大家好,我是菀枯😜 🎉 支持我:点赞👍收藏⭐️留言📝 💬格言:不要在低谷沉沦自己,不要在高峰上放弃努力&am…

布局福建市场,维也纳酒店欧暇·地中海酒店能否为投资人带来信心与底气?

近日,锦江酒店(中国区)“一城一海,暇享好时光”——欧暇地中海漳州长泰凯悦广场店开业典礼隆重举办。 与此同时,锦江酒店(中国区)维也纳酒店&欧暇地中海酒店品牌厦门推介会也圆满落地。在本…

Able2Extract Professional识别引擎经过微调

Able2Extract Professional识别引擎经过微调 改进的表格检测-现在,您可以在自定义PDF到Microsoft Excel转换过程中更准确地确定类似表格结构和内容的位置。 改进了表与列标题的分离-表识别引擎经过改进,可以检测和识别具有单个标题的多列表。 改进的PDF文…

echarts map地图中绘制浙江省市区县乡镇多级联动边界下钻的最新geojson数据文件获取和更新

文章目录ECharts Map地图的显示GeoJSON数据文件获取在ECharts中绘制浙江省的数据ECharts Map地图的显示 ECharts支持地理坐标显示,专门提供了一个geo组件,在setOption中提供option.geo配置即可显示地图。 option.geo配置中有个map属性,取值…

HBase中的Compaction详解

Compaction的作用 由于memstore每次刷写都会生成一个新的HFile,且同一个字段的不同版本(timestamp)和不同类型(Put/Delete)有可能会分布在不同的 HFile 中,因此查询时需要遍历所有的 HFile。为了减少 HFile…

PHPMYADMIN 无法编辑 MYSQL 解决方法

本想通过镜像重新把老站点搭建起来拷贝点文章内容,登录后台时发现忘记了密码,想着通过 PHPMyAdmin 修改 Mysql 数据库内容是非常简答的,万万没想到如下图提示错误:#1030 Get error -1 from storage engine,当时就想到可能因 InnoDB 引擎问题导致,查看在 Mysql 的 my.cnf …

C#学习记录——Windows计算器的制作【实例】

参考《C#从入门到项目实践》边学习,边练习实现。 Windows计算器的制作 此次练习的计算器应用软件在Visual Studio 2019编程环境中开发,是一个简单的窗体应用程序,实现简单的计算器功能。 1、系统功能描述 Windows计算器是利用C#程序设计编…

InputStreamReader构造函数的四种方式实现

InputStreamReader类的构造函数 InputStreamReader(InputStream in) //创建InputStreamReader对象,构造方法中传递输入流,使用默认字符集InputStreamReader(InputStream in, String charsetName) //创建InputStreamReader对象,构造方法中传递…

国考省考行测:主体分析法,高频词往往是主体,没有主体也能说语意主旨,故事型材料对比分析法,积极引申大道理

国考省考行测:主体分析法,高频词往往是主体,没有主体也能说语意主旨,故事型材料对比分析法,积极引申大道理 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论&#…

Redis主从复制,哨兵模式和集群模式

主从复制 什么是主从复制 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均…

JSP ssh网上家具店系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh网上家具店系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,M…

shell编程(三)--awk

本以为只是个命令&#xff0c;学起来这就是语言么&#xff0c;参看man手册多试吧 格式 awk pattern{action} <file> ​ A pattern can be: ​ BEGIN ​ END ​ expression 示例&#xff1a; ​ awk {print $0} awk.txt ​ print是打印命令&#xff0c;awk.txt是我们为…

JavaScript—实现手风琴画册

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;前端案例分…

EM算法——投硬币样例实现

理论参考 【机器学习】EM——期望最大&#xff08;非常详细&#xff09; 样例介绍 有c个硬币&#xff0c;每次随机选一个投掷n次&#xff0c;重复执行m次并记录结果。 根据投掷结果计算出每个硬币正面的概率。 每次选择的硬币未知。 过程介绍 随机初始化硬币为正的概率 he…

阿里P8终于整理出:Nginx+jvm+MySQL+Docker+Spring实战技术文档

前言 都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升…

Java搭建实战毕设项目springboot停车位管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的毕设项目springboot停车位管理系统源码&#xff0c;适合拿来做毕业设计的同学。可以下载来研究学习一下&#xff0c;本期把这套系统分享给大家。 技术架构 技术框架&#xff1a;jQu…

报表控件ActiveReports帮助高校实现办公、财务管理数字化

国内某知名高校教务处 陈主任&#xff1a; “我们教务处有十分多的文件、文档需要归纳整理&#xff0c;包括整个学校的文件通知公告、一些教务资源、职工工作日志记录、职工考勤记录等&#xff0c;同时还涉及一部分财务信息&#xff0c;职工的工资核算、学生续费的收纳等&…