个人随笔
目录
一、为啥我们项目用了RocketMQ确一点都用不上它的分布式事务的功能的理解
2020-12-22 20:30:46

所做项目一直也是用RocektMQ来解耦合,把一些比较耗时的操作都用消费程序来处理,奇怪的是不知道为啥没有遇到过啥分布式事务的问题,两个程序也好像不用怎么考虑生产者事务是否成功,然后消费者事务是否成功的问题?

原来是我迷糊了,分布式事务只会存在在多个数据库的情况,我所做的项目数据库就只有一个,生产者和消费者都链接同一个数据库,当然不会有事务问题,就算要考虑生产者有没有提交也不需要用分布式事务,只需要业务逻辑上控制即可,比如消费程序直接根据消息体中的Id去数据库中查看记录是否存在,若是不存在那么就返回消费失败,等生产者那边事务提交了,数据库中有记录了后重新消费即可促发,也可以生产者提交事务后再登记消息,如果怕因为网络或者其他问题导致登记不了消息,那么完全可以捕获异常,如果发送失败就记录发送的主题和内容,用一个补偿程序来发送即可,如果要考虑记录数据库又发生异常的情况,那么因为本来发送失败的概率就很小了,还要数据库记录失败,那么概率应该小到不能再小了,可以打印日志走故障了,毕竟一个系统可用性高达了四个9就很不错了。

 392

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2