其他分享
首页 > 其他分享> > MQ消费消息后查到的数据是历史数据

MQ消费消息后查到的数据是历史数据

作者:互联网

问题场景:A服务更新数据库然后发送mq,

               B服务消费做业务逻辑查询A服务的数据库是更新前的数据。

 

可能原因:1:A服务中数据库食物未提交,消息发出并且被消费,导致B服务查到历史数据。

               解决办法:1消费端sleep几秒等A服务事务提交(最简单的处理但是不是很合适)

                              2生产端做事务提交后发送mq ,如果用rocketMq他有事务消息。如果其他mq那么做一个代理将发送mq做成预发,缓存到threadLoccal中,然后事务代理处理完,这一层代理去拿mq消息和topic去发送(threadlocal最好先remove下)

                              3生产者直接将修改的内容作为消息题直接发送过来。

               2:A服务缓存问题,发送mq之前未清理缓存

               解决办法:先请缓存然后发送mq 

标签:事务,缓存,服务,数据库,后查,发送,mq,MQ,历史数据
来源: https://www.cnblogs.com/6kuaifuji/p/15578661.html