2023-07-06:RabbitMQ中的AMQP是什么?

news2025/1/13 15:30:04

2023-07-06:RabbitMQ中的AMQP是什么?

答案2023-07-06:

AMQP

AMQP(Advanced Message Queuing Protocol)是一个应用层协议的开放标准,旨在设计面向消息的中间件。基于AMQP协议的客户端和消息中间件可以自由地传递消息,不受客户端、中间件产品或开发语言的限制。其目标是实现一种被广泛应用于各行业的标准消息中间件技术,以降低企业和系统集成的成本,并提供工业级的集成服务。RabbitMQ是AMQP协议的一个主要实现。

image.png

客户端与RabbitMQ的通讯

连接

作为客户端(生产者或消费者),要与RabbitMQ通信,首先需要建立一条TCP连接。在建立连接后,客户端需要发送一条"问候语",以确保彼此都遵循AMQP协议。这类似于与他人打招呼时说"你好",或者与外国人打招呼时说"hello"。一旦确认了使用相同的"语言",客户端和RabbitMQ就完成了"认证"。然后,它们可以创建一个AMQP信道来进行通信。

信道

信道是生产者和消费者与RabbitMQ进行通信的通道。它是在TCP连接上建立的虚拟连接。这意味着RabbitMQ可以在一条TCP连接上创建多个信道,以便处理多个线程。每个线程对应一个唯一的信道ID,从而保证了信道的私有性,并与特定的线程相关联。

为什么不使用多个TCP连接呢?这是因为通过多路复用技术,RabbitMQ可以在单个TCP连接上支持成百上千的信道。每秒创建和销毁大量的TCP连接对系统性能消耗较大。因此,选择在一条TCP连接上建立多个信道是为了保证性能。

从技术上讲,这被称之为“多路复用”,对于执行多个任务的多线程或者异步应用程序来说,它非常有用。

虚拟主机

虚拟主机(Virtual Host),简称vhost,实质上是一个精简版的消息队列服务器,拥有自己的队列、交换器和绑定,而且最重要的是具备独立的权限机制。虚拟主机能够在逻辑上实现客户端之间的隔离,避免队列和交换器名称的冲突。在连接到RabbitMQ时,必须指定虚拟主机。RabbitMQ默认包含一个名为"/"的虚拟主机,通过默认的用户和密码(guest)进行访问。

在RabbitMQ中创建用户时,必须将其分配给至少一个虚拟主机,并且该用户只能访问其所分配的虚拟主机中的队列、交换器和绑定。虚拟主机的创建需要通过RabbitMQ的管理控制工具进行操作。

交换器类型

交换器类型共有四种:direct、fanout、topic和headers。其中,headers类型与direct类型非常相似且不常使用,可以忽略不计。

Direct

Direct交换器是一种路由键完全匹配的交换器类型,它将消息按照路由键的完全匹配进行投递到相应的队列。Direct交换器是RabbitMQ的默认交换器。当声明一个队列时,它会自动绑定到默认的Direct交换器,并以队列名称作为路由键进行消息的发布:channel->basic_public($msg,’’,’queue-name’)。

image.png

Fanout

Fanout交换器将消息广播到所有绑定的队列,不管队列是否绑定了特定的路由键。当消息经过Fanout交换器时,每个队列都会收到一份复制的消息。

image.png

Topic

Topic交换器通过使用“”和“#”通配符来处理消息的路由键,从而将来自不同源头的消息投递到同一个队列。在Topic交换器中,路由键可以包含多个标识符,通过使用“.”进行分隔。“”通配符用于匹配一个标识符,而“#”通配符用于匹配一个或多个标识符。

image.png

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

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

相关文章

Mysql中IP地址如何在数据库中存储

用无符号的32位整数存储,不要用字符串存储ip 为什么呢? 在Mysql中,当存储ipv4地址的时候,应该使用32位的无符号(int unsigned)来存储ip地址,而不是使用字符串,用int unsigned类型存…

4-Spring cloud之搭建Ribbon负载均衡——服务器上实操(下)

4-Spring cloud之搭建Ribbon负载均衡——服务器上实操(下) 1. 前言1.1 Ribbon负载均衡架构图 2. Ribbon自带的负载均衡2.1 Ribbon自带的负载均衡算法2.2 自带负载均衡之间的切换 3. Ribbon自定义负载均衡3.1 自定义Ribbon负载均衡(简单试用&a…

【IMX6ULL - LOGO替换】根文件系统主机名logo替换教程

1、修改linux主机的配置文件/etc/hostname里的主机名 2、重启 reboot

2023电商购物网站有哪些知名和靠谱的?

最近几年,人们的消费方式发生了极大的改变,在这种趋势之下,很多企业都开始着手搭建自己的网购平台,下面是小编盘点的国内市场上较为出名的网购平台,大家可以借鉴其运营模式! 1、淘宝网 在中国,淘宝网可以说…

推荐这10款好用的产品设计软件,轻松提效

在现代技术飞速发展的时代,产品设计是创新和成功的关键。本文将向您推荐10款顶级产品设计软件,为您的设计过程增添灵感和效率。 1、即时设计 即时设计是一个基于云的产品设计协作一体化工具,具有很强的功能和灵活性,它提供了全面…

详细解读Sui Gas运作机制和其他你不知道的细节

Sui的Gas费模型使链上交互费用变得可预测而且更低廉,这两个关键特征对面向全球范围内的娱乐和实用apps的基础设施十分关键。区块链的Gas费是指处理事务需要支付的价格,用于补偿和奖励支持网络运行的服务商。 通常,用户支付Gas费来执行网络上…

Webpack打包ts文件

安装依赖包: npm i -D webpack webpack-cli typescript ts-loader 配置webpack配置文件(webpack.config.js): //webpack中所有的配置文件信息都得写在module.exports中 module.exports{//指定入口文件entry:./src/index.ts//指定…

terminal 终端Ctrl+Shfit+E键与搜狗输入法冲突Linux

下载完搜狗输入法后,发现CtrlShfitE不能在终端分屏了,原因是和搜狗的快捷键冲突了,把搜狗的禁用了或者换成其它快捷键即可 界面右上角打开搜狗拼音,点击属性设置 把勾去掉或者换其它快捷键

eladmin环境搭建

1、参考这里的简介、快速了解、快速开始 简介 | ELADMIN 在线文档 2、后台我用的是Idea,要记得安装jdk、下载maven,Idea中要记得核对Settings、Project Structure的jdk、maven相关配置。同时也要核对数据库配置是否是好的,数据库是否能连接…

不同ts文件下,提示变量名重复的问题解决

同一个目录的不同文件下使用同一个变量名称出现报错 是因为ts的文件默认是全局文件 发现即使在标签栏关闭 也无法解决, 可以尝试在 报错的文件上加上 export{},即可完美解决

实战 |记一次简单渗透测试实战

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,鹏组安全及文章作者不为此承担任何责任。 在进行渗透测试时,首先需要进行的是信…

系统分析师下午案例真题及解析(2022-2020年)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 2022年案例真题 真题1 阅读以下关于软件系统分析与建模的叙述,在答题纸上回答问题1至问题3。 【说明】 某软件公司拟开发一套博客系统&#xf…

Java使用ClassLoader读取外部json文件

我们有时候会遇到这样一种业务场景:某个对象是变化的,在不同项目的部署中,可能需要更改对象中的某个属性,这时如果我们将该对象写在代码里,这样不仅寻找不便,部署后也不能随便修改(修改后又要重…

9个面试模板:招聘经理的问题和指南

有效的面试让我们更好的提升招聘效率,招聘经理和招聘人员可以使用面试模板确保高效快捷地进行面试。 面试模板有助于构建面试流程,为向候选人提问和记录他们的答案创建一个一致的框架。支持不同公司自定义面试模版,面试模版还可以更轻松地对…

Win10开始菜单打不开怎么办?Win10开始菜单打不开解决方法

Win10开始菜单打不开怎么办?当用户在Win10系统上遇到开始菜单打不开的问题时,可能会导致无法方便地访问和运行应用程序、设置等功能,这时候用户可以重启一下Win10电脑的任务管理器来解决问题,以下就是Win10开始菜单打不开解决方法…

撕去“械字号”标签,敷尔佳靠营销还能走多远?

回顾刚刚过去的六月,美妆护肤板块回暖趋势继续保持。 据数据显示,6 月淘系、抖音合计美妆GMV同比增长约13%,其中,护肤、彩妆分别同比增长14%、11%。而据美加漾科技披露的《2023年618护肤市场大数据调研》显示,护肤品市…

一键安装docker及docker-compose

1、创建docker存放相关文件目录,该目录可自己定义。2、添加相关文件,可在网盘提取。其中docker-20.10.9.tgz和docker-compose为安装包,也可根据需要在网上下载,注意docker-compose安装包下载后需要改名为docker-compose。 链接&am…

【正点原子STM32连载】第五十一章 汉字显示实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第五…

【Kafka】Kafka基础概念笔记

【Kafka】Kafka基础概念笔记 文章目录 【Kafka】Kafka基础概念笔记1. 两种模式1.1 点对点模式1.2 发布/订阅模式 2. 基础架构3. Topic命令行操作3.1 查看 Topic 操作3.2 创建 Topic3.3 查看所有 Topic3.4 查看 Topic 的详情3.5 修改分区数3.6 删除 Topic 4. 生产者命令行操作4.…

统一参数校验

使用注解,统一参数校验 我们在实际的开发过程中经常会遇到需要对参数进行校验的情况,比如在需要用户输入手机号的时候他是不是真的输入了一个合法的手机号,在需要用户输入一个邮箱的时候他是不是真的输入了一个合法的邮箱,用户输…