栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-12-30 rabbitmq消息问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-12-30 rabbitmq消息问题

开发过程中遇到一个问题,事情是这样的,A ,B两个服务,A服务向数据库插入一条记录,并写入一条消息,即当前插入的数据至相应的交换机(先插入数据库后写入到mq)
然后B服务根据这个消息,去数据库查询当前写入的这条记录,结果发现,B服务从数据库中查询不到当前的这条记录;
分析原因: A插入数据的时候,虽然是先插入,后写入消息,但是由于消息消费很快,B在读取到这条消息去数据库查询的时候,A的事务还未提交,导致在B服务去数据库查询的时候,并没有查询到该条数据
解决办法: 让A服务器插入数据库,并提交事务之后,在写入mq的消息,就可以避免此类问题

上解决办法的代码:

//A服务中的数据保存之后,提交事务之后再写消息时候
// 插入数据
faceControlTaskDetailService.saveBatch(faceControlTaskDetailList);
// 写入消息
        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
            @Override
            public void afterCommit() {
              // 写入消息
            }
        });
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号