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 

上一篇:Nginx 突然无法启动 出现 unknown directive "?诺"错误


下一篇:RabbitMQ添加新用户并支持远程访问