Day19_RabbitMQ

文章目录

1.什么是RabbitMQ?为什么使用RabbitMQ?

RabbitMQ是一款开源的消息中间件,可以用它来:应用解耦、异步提速、削峰填谷。

1.应用解耦

在这里插入图片描述
在这里插入图片描述

2.异步提速

在这里插入图片描述
在这里插入图片描述

3.削峰填谷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.RabbitMQ有什么优缺点?

优点:应用解耦、异步提速、削峰填谷。;

缺点:

在这里插入图片描述

3.什么是元数据?元数据分为哪些类型?包括哪些内容?与cluster相关的元数据有哪些?元数据是如何保存的?元数据在cluster中是如何分布的?

在非cluster模式下,元数据主要分为Queue元数据(queue名字和属性 等)、Exchange元数据(exchange名字、类型和属性等)、Binding元数据 (存放路由关系的查找表)、Vhost元数据(vhost范围内针对前三者的名字空 间约束和安全属性设置)。

在cluster模式下,还包括cluster中node位置信息和node关系信息。元数据按照erlang node 的类型确定是仅保存于RAM中,还是同时保存在RAM和disk上。元数据在cluster中是全 node 分布的。

4.在单node系统和多node构成的cluster系统中声明queue、exchange,以及进行binding会有什么不同?

当你在单node上声明queue时,只要该node上相关元数据进行了变 更,你就会得到Queue.Declare-ok回应;而在cluster上声明queue,则要 求cluster上的全部node都要进行元数据成功更新,才会得到 Queue.Declare-ok回应。另外,若node类型为RAM node则变更的数据 仅保存在内存中,若类型为disk node则还要变更保存在磁盘上的数据。

5.客户端连接到cluster中的任意node上是否都能正常工作?

是的。客户端感觉不到有何不同。

6.若cluster中拥有某个queue的owner node失效了,且该queue 被声明具有durable属性,是否能够成功从其他node上重新声明该 queue ?

不能,在这种情况下,将得到404 NOT_FOUND错误。只能等queue所 属的node恢复后才能使用该queue。但若该queue本身不具有durable 属性,则可在其他node上重新声明。

9.RabbitMQ的使用场景有哪些?

(1)消息队列在项目中的使用

①锁库存:我可以在锁库存时一旦锁定成功,发个消息给交换机,经过延时队列,30分钟后路由到解锁库存服务那边,解锁库存那边会看用户取消订单了没有、订单成功了没有来决定是否需要解锁库存;
②下订单:一下单成功就给RabbitMQ发消息,经过延时队列20分钟以后到达订单的释放服务,假如用户没付款,那么此时就可以进行关闭订单;
③支付宝异步通知:有用户完成订单,支付宝就会按照你的外网地址给你发送RabbitMQ消息,你收到支付宝RabbitMQ消息,第一步先验证这个消息是支付宝发来的;验证完签名然后就是获取支付宝发送来的消息然后提取重要的信息到“交易流水”表里面,另外更新mos_order表的“订单状态”
④秒杀服务:在秒杀服务中用户如果占位成功就发送RabbitMQ消息给gulimall-order表示要给该用户下单啦。
gulimall-order一直监听着那边发来的消息,收到消息后就保存订单信息然后保存订单项信息

具体的查看:day03_《谷粒商城》的完整流程(详细版二)

(2)RabbitMQ的使用场景

①应用内的同步变异步,比如订单处理,就可以将订单信息放到队列,订单微服务从队列里依次获得消息处理,高峰时的大量订单可以积压在队列里慢慢处理掉。

②跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackTurn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值