RabbitMQ是什么?

了解MQ

消息队列(MQ)是一种用于异步通信的通信机制,通过将消息存储在队列中以实现系统之间的解耦。MQ 的主要功能是异步传递消息,允许发送者将消息发送到队列中,而接收者可以在适当的时候从队列中读取消息。MQ 常用于分布式系统中,以提高系统的可靠性和可扩展性。

MQ的特性

  1. 异步通信:发送者不需要等待接收者处理完消息,可以继续执行其他任务。
  2. 解耦:发送者和接收者之间不直接通信,降低了它们之间的耦合度。
  3. 持久性:大多数消息队列可以持久化消息,即使系统崩溃或重启,消息仍然可以被保存。
  4. 流量控制:消息队列可以帮助处理突发流量,缓解系统压力。
  5. 可靠性:通过确认机制确保消息传递的可靠性。

同步调用与异步调用的区别

04011b5d53e14584a594f17ca25d9df1.png

 

MQ初体验——收发消息

1.基本概念

生产者(Producer):负责发送消息到队列的应用程序。

消费者(Consumer):负责从队列中接收并处理消息的应用程序。

消息:生产者发送到队列的数据,通常包含了业务信息。

队列:存储消息的缓冲区,消费者从中获取消息。

2. 消息收发的基本流程

  1. 生产者发送消息

    生产者通过MQ客户端将消息发送到消息队列。
  2. 消息存储

    消息被存储在消息队列中,等待被消费者消费。
  3. 消费者接收消息

    消费者从队列中获取消息并进行处理。
  4. 确认处理

    消费者处理完消息后,通常会向MQ确认消息已被成功处理,以便MQ删除该消息。

3.交换机

c3beeb742b0841b5a3c15af3f26100d6.png

控制台模拟生产者发送的消息

870391d09c9945caa8ff1a420f7f5998.png

发送到交换机的消息,只会路由到与其绑定的队列,因此仅仅创建队列是不够的,我们还需要将其与交换机绑定。

c10edd5607be43938b7f1dca9520813f.png

4.队列

1ba4cd976bf54a3faca630d531be7929.png

点击队列名称,进入详情页,查看队列详情,这次我们点击get message:

ec03f064331f427c860c0502d6c4035b.png

MQ初体验——数据隔离

1.数据隔离的意义

数据隔离是指在系统中不同模块或服务之间保持数据的独立性和不互相干扰。在微服务架构和分布式系统中,消息队列(MQ)是实现数据隔离的一种有效手段。通过使用MQ,可以确保不同服务在处理消息时不直接依赖彼此,从而提升系统的可维护性、可扩展性和可靠性。

新建用户,并为用户创建虚拟主机,测试不同虚拟主机之间的数据隔离现象

f9b3d7ccbee342b6b06b2fbeca20f3ef.png

设置成功后登出并用刚刚创建的用户登录

4d28507c8b0b4b35a9ad5474af655d4f.png

访问队列消息提示被拒绝

7323a777aa60410882def40beddadeba.png

数据隔离的原理

主要指不同的生产者和消费者在处理消息时,能够确保它们之间的数据不会互相干扰。这种隔离机制通常由虚拟主机(Virtual Host, vHost)、队列(Queue)以及其他隔离策略来实现。

虚拟主机(vHost)

虚拟主机是消息队列系统中的一个逻辑分区,用于将消息、队列、交换机等资源进行隔离。每个虚拟主机可以看作是一个独立的命名空间,允许多个不同的应用或租户在同一个 MQ 实例中进行操作,但它们的资源相互独立,不会产生冲突。

数据隔离的原理:通过使用多个虚拟主机,可以为不同的应用、服务或租户提供独立的队列、交换机和绑定规则。这意味着即使是在同一个 MQ 实例中,不同虚拟主机下的消息生产和消费是互不干扰的。

场景:比如一个大型系统可以为不同的模块创建不同的虚拟主机,来管理不同的消息队列。每个模块的消息只能在其对应的虚拟主机中处理,保证数据的隔离和安全。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试-2024年7月16号

面试-2024年7月16号 自我介绍Mysql主从复制是做了一个什么样的集群?在Mysql的使用过程中遇到过哪些问题?mysql迁移具体步骤mysql漏洞修复是怎么做的。mysql的容灾方案(灾备恢复机制)。redis多节点怎么部署的redis的备份与恢复、迁…

【系统配置】信创系统配置文件保护与防篡改 _ 统信 _ 麒麟 _ 方德

原文链接:【系统配置】信创系统配置文件保护与防篡改 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于如何在信创(国产化)系统中进行配置文件保护与防篡改的文章。随着信创系统在各行业的广泛应用&#x…

Gin框架操作指南01:开山篇

Gin是目前最流行,性能最好的的GoWeb框架,几乎成为了学习GoWeb必备的知识。本人最近也在学Gin,在b站搜了很多教程,发现有的教程不够详细,有的教程工具包安装有问题,而官方文档的很多示例代码又不全&#xff…

冒泡排序.

文章目录 🍊自我介绍🍊冒泡排序排序过程图解 🍊冒泡排序代码 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是…

【HTML】构建网页的基石

我的主页:2的n次方_ HTML 是一种超文本标记语言,不仅有文本,还能包含图片,音频等 1. HTML 的文件基本结构 html 标签是整个 html 文件的最顶层标签,head 标签中写页面的属性,body 标签是页面中显示的…

idea2024年版本

最简单安装2024.2版本idea 内带安装教程 ** 下载链接:https://pan.quark.cn/s/ab24afbaa43f 提取码:KHrq

Tauri(读音:踹你)开发简介:1.创建和运行第一个app

桌面app与web app之间的界限越来越模糊,以前可能说基于web编写的app性能不好,但是现在我们来看,不管钉钉还是vscode,都是采用了Electron框架,以web模式开发出来的。 提到Electron相信许多程序员都不陌生,它…

STM32 | STM32F4OTA_ESP8266_Bootloader为引导程序远程更新的代码(APP)

更新。点击上方"蓝字"关注我们 01、思路 >>> STM32F4OTA_ESP8266_Bootloader为引导程序 远程更新的代码(APP):远程更新的APP Ymoden_server:为运行在Linux的TCP服务器 备注:STM32 OTA远程更新需要连接热点 电…

信息抽取数据集处理——RAMS

引言 RAMS数据集(RAMS:Richly Annotated Multilingual Schema-guided Event Structure)由约翰斯霍普金斯大学于2020年发布,是一个以新闻为基础的事件抽取数据集。它标注了9,124个事件,涵盖了139种不同的事件类型和65种…

Tailwind css系列教程(二)

一、参考属性 https://tailwind.muzhifan.top/ 也可查找官方网站 以下为参考官网及网络上其他文章内容整理: 二、常用属性格式 1、颜色 color:颜色名称 shade:色度,取值范围为 100~900,不可对黑色或白色使用 文…

极化基变化后的散射矩阵

极化基只旋转一次 重点:发射和接收的电磁波可以理解为,在极化基上的坐标,或者就是琼斯矢量; 其中极化基坐标的理解方式在想发射的时候好理解,回波由于多了个共轭,就想其接收到的不是坐标,而是琼…

Power BI:链接数据库与动态数据展示案例

一、案例背景 在数据驱动的时代,如何高效、直观地展示和分析数据成为了企业决策和个人洞察的关键。Power BI作为一款强大的商业智能工具,凭借其强大的数据连接能力、丰富的可视化选项以及交互性和动态性,成为了众多企业和个人的首选。本文将…

unity学习笔记-Text mesh Pro

Text mesh Pro组件 组件使用的大致流程细节导入之后字体没有显示可能一 可能二 注意事项 好久没更了…最近在学习使用别人的框架进行开发,坑也不少,不过学习到了很多设计思维。 言归正传。忘了是什么是时候的版本开始,unity多了这个组件&…

nextjs项目中,使用postgres的完整案例

目的 通过此案例,可以简单快速的过一下数据库的操作,熟悉app-router这种模式下,client component和server component的两种组件中基本的接口使用。 技术栈 nextjs14.2.* app-routervercel/postgres0.10.*typescript5 重要事情说三遍1 ap…

解决visio2021与本地家庭和学生版office21不兼容问题

原因分析 office 分为 MSI(windows Installer)和C2R(即点即用版本) 两个版本。 下载对应版本 可以看这个B站哥哥的资源:https://www.bilibili.com/read/cv17513800/ ,选择标准离线版本安装

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是,它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如,一个微服务可以用Java编写,另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目,旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时,面具的眼睛会移动并播放声音,非常适合万圣节使用。 这个项目是一个很好的起点,特…

又一支付机构“经营异常”——易极付

近日,支付行业再次传出风波,重庆易极付科技有限公司(简称“易极付”)因“失联”问题被重庆两江新区市场监督管理局列入了经营异常名录。据天眼查平台显示,这一决定是基于“通过登记的住所或者经营场所无法联系”到该公…

【CSS in Depth 2 精译_050】7.3 CSS 响应式设计中的流式布局原则(Fluid layout)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第七章 响应式设计】(概述) 7.1 移动端优先设计原则(上篇) 7.1.1 创建移动端菜单(下篇)7.1.2 给视口添加 meta 标签&#xf…

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。 一、安装ImageMagick(如果尚未安装)&#xff1…