关于事件和监听器的使用疑问

请教下老师 @leo ,正常情况下支付成功回调里会处理非常多的逻辑,比如:减库存,加销量,增加用户积分,增加该用户的上线佣金,增加上线的佣金记录等等,如果每个逻辑都创建一个事件来实现的话,各个逻辑实现都分属在不同的事件里,一旦某个环节异常出错,比如购买产品的用户的上线佣金增加出错导致佣金增加失败,但是依然增加了佣金记录,这就导致了数据的不一致性,如果是将这些业务逻辑写在一个事务里面的话一旦有一步出错就会进行数据回滚,能确保数据一致,但是如果写在多个事件里的话如何能确保数据一致性?或者说能达到使用事务出错后回滚的的效果l

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

增加佣金和佣金记录应该是同一个逻辑不可以拆开,所以要么都成功要么都失败。

支付成功的逻辑需要区分核心逻辑和非核心逻辑,对于非核心逻辑的失败可以忽略或者事后校对重试,比如课程中的发送成功邮件;对于核心逻辑失败则应该记录日志+回滚,由研发决定应该是手动处理异常还是忽略。

3年前 评论
讨论数量: 1
leo

增加佣金和佣金记录应该是同一个逻辑不可以拆开,所以要么都成功要么都失败。

支付成功的逻辑需要区分核心逻辑和非核心逻辑,对于非核心逻辑的失败可以忽略或者事后校对重试,比如课程中的发送成功邮件;对于核心逻辑失败则应该记录日志+回滚,由研发决定应该是手动处理异常还是忽略。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!