聊聊业务系统中投递消息到mq的几种方式
背景 电商中有这样的一个场景: 下单成功之后送积分的操作,我们使用mq来实现 下单成功之后,投递一条消息到mq,积分系统消费消息,给用户增加积分 我们主要讨论一下,下单及投递消息到mq的操作,如何实现?每种方式优缺点? 方式一 step1:start transactionstep2:生成订单step3:投递消息到mqstep4:commit transaction 这种方式是将发送消息放在了事务提交之前,可能存在的问题: step3发生异常 导致step4失败,下单失败,直接影响到下单业务 step4发生异常,其他step成功 下单失败,消息投递成功,给用户增加了积分 方式二 我们将发送消息放到事务之后进行:step1:start transactionstep2:生成订单step3:commit transactionstep4:投递消息到mq 可能会出现的问题:step4发生异常,其他step成功 导致下单成功,投递消息失败,用户未增加积分 上面两种是比较常见的做法,也是最容易出错的。 方式三 step1:start transactionstep2:生成订单step3:本地库中...

