当前位置: 首页 > 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——深度神经网络训练
  • 首届中国—海湾阿拉伯国家合作委员会和平利用核技术论坛在成都召开
  • 田野调查|“心青年”的日常秩序与归属之地
  • 圆桌|耐心资本对科技创新有何意义?天使投资最关注哪些要素?
  • 广西:启动旱灾防御三级应急响应
  • 不降息就走人?特朗普试图开先例罢免美联储主席,有无胜算
  • 杭州挂牌3宗住宅用地,起始总价约30.04亿元