2021-12-30 rabbitmq消息问题

2021-12-30 rabbitmq消息问题,第1张

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() {
              // 写入消息
            }
        });

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5687509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存