当前位置: 首页 > news >正文

【RabbitMQ | 第2篇】RabbitMQ 控制台实现消息路由 + 数据隔离

文章目录

  • 同步调用和异步调用
  • MQ
  • RabbitMQ
    • 1. RabbitMQ控制台实现交换机路由到队列
      • 1.1 创建队列
      • 1.2 将消息发送给交换机,是否会到达队列
    • 2. RabbitMQ控制台实现数据隔离
      • 2.1 添加一个用户
      • 2.2 创建新的虚拟主机

在这里插入图片描述

同步调用和异步调用

同步调用是指完成一个功能,其内部有多个任务,要一直等待这几个任务全都完成后,才算这个功能的结束。

e.g 比如,在登录的时候,原本只需要校验用户名和密码,但需求说的是,还需要给用户发一条短信,或者还需要给用户加积分之类的。如果是同步的话,那么用户登录就不仅仅是校验用户名和密码,还要一直等待成功发送短信或加完积分后,才能进入网页。
这样,用户等待时间较长,性能就比较差。

异步调用是指只完成必要的任务,其余任务交给消息代理,由消息代理去慢慢通知消息处理方处理,用户就不需要一直等待,把任务通知给消息代理即可。
优点:性能较好,无需等待;缓存消息,流量削峰填谷。
缺点:不能立即调用结果;不确定后序任务时候执行成功;依赖于消息代理的可靠性。

在这里插入图片描述

MQ

MQ(MessageQuque):消息队列,存放消息的一种队列。
常见:RabbitMQ、RocketMQ、Kafka、ActiveMQ。

RabbitMQRocketMQKafkaActiveMQ
公司Rabbit阿里ApacheApache
开发语言ErlangJavaScala&JavaJava
协议支持AMQP, XMPP, SMTP, STOMP自定义协议自定义协议OpenWrite, STOMP, REST, XMPP, AMQP
可用性一般
单机吞吐量(QPS)一般非常高
消息延迟微妙级毫秒级毫秒以内毫秒级
消息可靠性一般一般

RabbitMQ 的延迟性最好(微秒级),Kafka 的吞吐量最高(百万级别的 QPS)。

RabbitMQ

publisher(消息发送者)、exchange(交换机)、queue(队列)、consumer(消息消费者)、virtual-host(虚拟主机)
在这里插入图片描述
消息模型:
消息发送者将消息发送给交换机,交换机路由到队列,消费者监听队列。

为什么有 virtual-host 的存在 ?
一个公司中不同项目使用同一套 MQ 的服务,那这样不同项目的交换机和队列就可能会有冲突。所以就像数据库一样,每个项目有自己的 virtual-host,不同的 virtal-host 有不同的交换机和队列,那么不同的 virtual-host 内的队列和交换机就不会产生影响。 —— 数据隔离作用

1. RabbitMQ控制台实现交换机路由到队列

1.1 创建队列

在这里插入图片描述

1.2 将消息发送给交换机,是否会到达队列

在这里插入图片描述
交换机绑定队列:
在这里插入图片描述
绑定后,点击绑定的队列,可以看到:
在这里插入图片描述
模拟交换机接受消息和路由消息:
在这里插入图片描述
发送后,交换机显示:
在这里插入图片描述
发送后,队列 hello.que1 中:
在这里插入图片描述

交换机负责路由和转发消息,本身不具备存储消息的能力。

2. RabbitMQ控制台实现数据隔离

2.1 添加一个用户

在这里插入图片描述
可以看到,此时新增的用户是没有虚拟主机的:
在这里插入图片描述
点击退出登录后,使用刚刚新创建的用户登录:
在这里插入图片描述
此时没有虚拟主机,无法进行任何的操作的。

2.2 创建新的虚拟主机

在这里插入图片描述
查看当前用户的虚拟主机:
在这里插入图片描述
切换至刚刚创建的虚拟主机下,就不存在之前创建的队列了:
在这里插入图片描述
不同虚拟主机下的交换机:
在这里插入图片描述

一般,不同的项目就创建不同的虚拟主机,保证数据的隔离

相关文章:

  • HarmonyOS-ArkUI-动画分类简介
  • VSCode 扩展离线下载方法
  • wpf stylet框架 关于View与viewmodel自动关联绑定的问题
  • 17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--SonarQube部署与配置
  • 大数据可能出现的bug之flume
  • 【C++】深入浅出之多态
  • 系统中的malloc怎么分配内存
  • 第一月第四周
  • RAG框架精选2
  • 学习笔记—C++—string(练习题)
  • kotlin知识体系(六) : Flow核心概念与与操作符指南
  • 利用OLED打印调试信息: 控制PC13指示灯点灯的实验
  • C++在VR/AR图形处理开发中的实战应用
  • 如何在 Go 中创建和部署 AWS Lambda 函数
  • 2025-2030:视频联网平台的六大技术演进趋势
  • 关于隔离2:ADC芯片
  • 【每天一个知识点】医学领域的模式识别
  • Linux网络UDP与TCP
  • node.js|环境部署|源码编译高版本的node.js
  • 深度学习4——深度神经网络训练
  • “译通天下·言立寰宇”:华东师大翻译家的精神传承
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题
  • 建设银行南昌分行引金融“活水”,精准灌溉乡村沃土
  • 奈雪的茶叫停“能喝奶茶就不要喝水”宣传,当地市监称不要误导消费者
  • “80后”蒋美华任辽宁阜新市副市长
  • 坚持科技创新引领,赢得未来发展新优势