原理描述
生产者向 broker 发送一条未经 commit 不可消费的事务性消息(半消息)。如果发送成功返回 SEND_OK
,则执行本地事务,执行成功则 commit,commit 过的消息可正常被服务端消费。执行失败则 rollback,rollback 的消息则被删除。还有一种情况,就是 broker 没有收到确认消息,则会回查本地事务的状态,看是 commit,还是 rollback。
演示过程
请求 http://localhost:8080/callback/transaction?text=888¶m=1
正常被消费
请求 http://localhost:8080/callback/transaction?text=888¶m=2
被回滚掉
请求 http://localhost:8080/callback/transaction?text=888¶m=7
回查事务状态
项目 github 地址
https://github.com/Nirvana010…