标签:事务 缓存 服务 数据库 后查 发送 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。