RocketMQ事务消息:案例场景代码实现

发送half事务消息出去

notion image

假如half消息发送失败,或者没收到half消息响应怎么办?

此时我们其实会在执行“producer.sendMessageInTransaction(msg, null)”的时候,收到一个异常,发现消息发送失败了。 所以我们可以用下面的代码去关注half消息发送失败的问题:
notion image
那如果一直没有收到half消息发送成功的通知呢?针对这个问题,我们可以把发送出去的half消息放在内存里,或者写入本地磁盘文件,后台开启一个线程去检查,如果一个half消息超过比如10分钟都没有收到响应,那就自动触发回滚逻辑。

如果half消息成功了,如何执行订单本地事务?

刚才代码里有一个TransactionListener,这个类也是我们自己定义的,如下所示:
notion image

如果没有返回commit或者rollback,如何进行回调?

notion image