当前位置:   article > 正文

2024年Cloud-借助消息队列解决分布式事务,2024华为Java高级面试题及答案_消息队列如何解决分布式事务

消息队列如何解决分布式事务

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

生产者将数据通过RabbitMQ-client发送到RabbitMQ-server中的exchange,exchange根据路由配置,分发给Queue,消费者从Queue拿到数据

分布式事务的产生

多个系统相互配合工作,产生数据一致性问题。
例如外卖场景中,下单中心,运单中心两个系统要配合工作,必须保证两个系统数据一致性。
错误的解决方案:
使用API接口调用,下单中心插入数据,调用运单中心的API接口处理数据,并启动事务回滚。
咋一看这场景没有什么问题,毕竟有事务回滚,一起成功一起失败,但其实存在API调用超时的情况,此时下单中心以为调用失败回滚,而运单中心只是超时仍会继续执行程序,从而造成两个系统数据不一致。
假设API调用成功,也有可能是在订单中心提交事务时失败了,此时订单中心回滚,而API已经调用,下单中心的数据已经产生,数据不一致。

使用消息队列解决分布式事务


问题的核心就是保证可靠生产与可靠消费
可靠生产:下单中心处理数据和状态表更改应该保证事务一致。生产者往消息队列发送数据时,在本地建立一张状态表,看是否成功发送给队列。利用RabbitMQ的确认机制看是否重发还是定时扫描状态表重发,保证可靠生产。兜底方案还是定时扫描状态表。
代码

/**

  • 分单处理队列
    */
    public static final String QUEUE_NAME_TRANSACTION = “xucheng.distribute.queue”;

/**

  • 分单处理交换机
    */
    public static final String EXCHANGE_NAME_TRANSACTION = “xucheng.distribute.exchange”;

/**

  • 消息队列服务进程,此进程包括两个部分:Exchange和Queue。
    */
    public static final String ROUTE_NAME_TRANSACTION = “xucheng.distribute.route”;

/**

  • 补单队列
    */
    //public static final String CREATE_QUEUE_NAME_TRANSACTION = “xucheng.order.reCreate.queue”;

/**

  • 1、交换机绑定到分单队列
  • @return
    */
    @Bean
    public DirectExchange transExchange() {
    return new DirectExchange(EXCHANGE_NAME_TRANSACTION);
    }

/**
*2、分单队列
*

  • @return
    */
    @Bean
    public Queue scoreQueue() {
    return new Queue(QUEUE_NAME_TRANSACTION, true);
    }

/**

  • 3、Binding
  • @return
    */
    @Bean
    public Binding bindingExchangeOrderReceiverQueue() {
    //通过Binding将Exchange与Queue关联起来。  
    return BindingBuilder.bind(scoreQueue()).to(transExchange()).with(ROUTE_NAME_TRANSACTION);
    }

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

dn.net/topics/618154847)收录**

需要这份系统化的资料的朋友,可以点击这里获取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/733428
推荐阅读
相关标签
  

闽ICP备14008679号