Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强
总时长 104:45:00 共408P
此文章包含第291p-第p293的内容
简介
seata无法使用在高并发场景,因为加了很多锁,相当于把并发变成了串口化了,所以这里我们在高并发场景不使用seata,使用最大努力通知型方法和可靠消息+最终一致性方案


这里使用消息队列来实现分布式事务(可靠消息+最终一致性方案)



最终一致性:几十分钟甚至一天解锁都可以的


使用rabbitmq的延时队列功能进行操作



使用mq的目的有: 解耦,削峰,提供并发等等





mq使用的是惰性检查机制,如果第一条消息是5分钟 5分钟之后才会来拿第一条消息,后面1分钟3分钟的都被挡上了,所以不要给消息加过期时间 使用第一种给队列加过期时间(即这个队列里的消息都是5分钟过期,这样永远不会挡住后面的,因为是按顺序执行的)


消费者监听这个死信队列 然后进行业务操作

重点:遵循一个服务一个交换机的原则

使用延迟队列
- 引入amqp包

可以使用amqpAdmin来创建交换机等信息,但是太麻烦了,所以我们写一个配置文件


这里是配置文件



第一个队列
第二个队列

创建交换机

创建绑定


rabbitmq存在某个队列的话,就不会新建

如果想修改队列的属性信息,需要删除重建


监听消息队列


引入延时队列是为了实现分布式事务的第四种方案的,延时队列的作用是实现最终数据一致性的

发送请求



发五个

收五个


1206

被折叠的 条评论
为什么被折叠?



