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

文章目录

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

同步调用和异步调用

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

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

这样,用户等待时间较长,性能就比较差。

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

MQ

MQ(MessageQuque):消息队列,存放消息的一种队列。

常见:RabbitMQ、RocketMQ、Kafka、ActiveMQ。

RabbitMQ RocketMQ Kafka ActiveMQ
公司 Rabbit 阿里 Apache Apache
开发语言 Erlang Java Scala&Java Java
协议支持 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 创建新的虚拟主机

查看当前用户的虚拟主机:

切换至刚刚创建的虚拟主机下,就不存在之前创建的队列了:

不同虚拟主机下的交换机:

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

相关推荐
Database_Cool_8 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
肥胖小羊17 小时前
解决企业微信 AccessToken 刷新并发冲突的分布式锁机制实践
分布式·企业微信
过期动态20 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
风中凌乱2 天前
kafka新版本集群的安装与部署
分布式·kafka
SLD_Allen2 天前
大规模分布式AI训练基础设施
人工智能·分布式·模型训练
富士康质检员张全蛋2 天前
Kafka的操作-消费的详情
分布式·kafka
昕光xg2 天前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
Benjamin℡2 天前
Zookeeper(一)搭建单体和集群服务以及Zookeeper客户端
分布式·zookeeper·云原生
wWYy.2 天前
分布式:数据复制
分布式
正儿八经的少年3 天前
分布式 ID
分布式