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