总结首先客户端Producer通过sendMessageInTransaction方法发送事务消息,Broker判断是事务消息就将消息topic存入到RMQ_SYS_TRANS_HALF_TOPIC返回给客户端,客户端继续执行逻辑 。
然后调用endTransaction方法去提交本地事务通过endTransactionOneway将消息提交给Broker端,Broker端通过Code为END_TRANSACTION的处理器去处理消息调用processRequest方法来处理对应的消息,
如果由于各种原因导致消息的失败传输,为了防止这些现象的出现所以在BrokerController启动时就启动一个线程每隔6s处理未回查的消息(检查最大次数为15次)的任务来进行消息的回查 , 简单来说就是通过sendCheckMessage方法去注册一个Code为CHECK_TRANSACTION_STATE的消息将内容发送给客户端,然后客户端在启动时也注册对应Code的处理逻辑 , 通过processTransactionState方法去处理事务的状态,如果正常最后还是会去执行endTransactionOneway方法,完成事务消息 。
【分布式场景下的事务机制】
推荐阅读
- 项目开发中什么场景下Redis适用?
- 数量过百,国产游戏版号发放创下新高,游戏行业发展正形成三大共识
- 又一位“睡衣男”榜一大哥?女主播直播效果搞砸,误以为地下恋情
- 无尽贪婪手机版怎么下
- 分手26年,赖文峰出狱后结婚到乡下度日,杨钰莹的选择令人心疼
- 干粉灭火器的压把怎样才能压下去 干粉式灭火器怎么把压力卸掉
- 手机WPS怎么提取页面,手机wps做的PPT怎么保存下来
- 7天狂赚一个亿!被封杀,被下架,也挡不住观众连夜排队送钱…
- 文章:39岁放下一切再出发,拼尽全力打出王炸,重新找回人生真谛
- 剪映片尾怎么去掉,剪映下载本地视频怎么去掉剪映号