当前位置: 首页 > news >正文

买证书网站开发工程师建设留学网站

买证书网站开发工程师,建设留学网站,湖南省建设监理协会官网,广告制作方案Broker提交或回滚事务消息 当生产者本地事务处理完成并且Broker回查事务消息后,不管执行Commit还是Rollback,都会根据用户本地事务的执行结果发送一个End_transaction的RPC请求给Broker,Broker端处理该请求的类是EndTransactionProcessor 第一步&…

Broker提交或回滚事务消息

当生产者本地事务处理完成并且Broker回查事务消息后,不管执行Commit还是Rollback,都会根据用户本地事务的执行结果发送一个End_transaction的RPC请求给Broker,Broker端处理该请求的类是EndTransactionProcessor
在这里插入图片描述

第一步,End_Transaction请求校验,主要检查项如下

1.Broker角色检查。Slave Broker不处理事务消息
2.事务消息类型检查。EndTransactionProcessor只处理
Commit或Rollback类型的事务消息,其余消息不处理,这里区分了事务回查
在这里插入图片描述
在这里插入图片描述

第二步,进行Commit或Rollback。

根据生产者请求头中的参数判断,是Commit请求还是Rollback请求,然后分别进行处理
在这里插入图片描述

commitMessage()

提交Half消息/这是事务消息服务接口中的一个方法,根据消息位点查询了Half消息,并将Half消息返回
在这里插入图片描述
在这里插入图片描述

checkPrepareMessage()

Half消息数据校验。校验内容包括发送消息的生产者组与当前执行Commit/Rollback的生产者是否一致,当前Half消息是否与请求Commit/Rollback的消息是否是同一条消息
在这里插入图片描述

endMessageTransaction()

消息对象类型转化,将MessageExt对象转化为MessageExtBrokerInner对象,并且还原消息之前的Topic和ConsumeQueue等信息
在这里插入图片描述

sendFinalMessage()

将还原后的事务消息最终发送到CommitLog中,一旦发送成功,消费者就可以正常拉取消息并消费
在这里插入图片描述

deletePrepareMessage()

在sendFinalMessage()执行成功后,删除Half消息。其实RocketMQ是不能真正删除消息的,其实质是顺序写磁盘,相当于做了一个"假删除"。"假删除"通过putOpMessage()方法将消息保存到TransactionMessageUtil.
buildOpTopic()的Topic中,并且做上标记TransactionalMessageUtil.REMOVETAG,表示消息已删除
在这里插入图片描述

  • 如果消息被标记为已删除,则调用addRemoveTagInTransactionOp()方法,利用标记为已删除的OP消息构造Message消息对象,并且调用存储方法保存消息
    在这里插入图片描述
  • TransactionalMessageUtil.buildOpTopic()方法跟保存Half消息时的逻辑类似
    在这里插入图片描述
  • Half消息保存在名为MixAll.RMQ_SYS_TRANS_HALF_TOPIC的Topic中,执行Commit和Rollback后的消息都保存在MixAll.RMQ_SYS_TRANS_OP_HALF_TOPIC
    对象中,以便Broker判断是否需要回查生产者事务的执行状态。
    在这里插入图片描述
    在这里插入图片描述
  • 调用存储层方法,真正地将OP消息保存到了CommitLog中
    在这里插入图片描述

Rollback实现逻辑

Rollback并没有真正删除消息,而是标记Half消息为删除,在Broker回查时机会跳过不检查
在这里插入图片描述

rollbackMessage()

该方法与CommitMessage()方法一样,都是查询Half消息并返回消息对象。

checkPrepareMessage()

消息校验,与Commit调用的是同一个方法

deletePrepareMessage()

删除Half消息,与Commit调用的是同一个方法

http://www.yayakq.cn/news/543575/

相关文章:

  • 自己做直播网站在线网站建设平台
  • 腾讯云搭建网站成都 网站建设培训
  • 做个网站软件多少钱做 英语试题的网站
  • 恒华大厦做网站公司建设信用卡中心网站首页
  • 手机网站 微信链接怎么做网站页面模板 建设中
  • 企业wordpress主题免费下载广东网络优化推广
  • 哪个设计网站赚钱网站分析设计做的项目的过程
  • 网站建设市区做一个网站要注意什么
  • 门户网站做wordpress 无法连接到ftp服务器
  • 暗网网站有那些网站报名怎么做
  • 自己想学做博客网站吗thinkphp网站建设课程
  • 打不开建设银行网站logo模板
  • 微站官网wordpress单页淘宝客主题
  • 游戏网站开发试验报告广西建设教育网站
  • 工信部个人网站备案建设银行个人网上银行app
  • 网站制作教程下载小程序商城怎么推广引流
  • 中文网站建设合同营销网站开发系统
  • 模板网站源码wordpress缺少临时文件夹
  • 驻马店河南网站建设房产网站关键词优化
  • 医疗 企业 网站建设江门站官网
  • 黄冈网站开发建设电子商务网站论文
  • 蚌埠哪里做网站wordpress权限ip
  • 郑州中色十二冶金建设有限公司网站常州网站推广招聘
  • 我想做教育网站那里做无锡游戏网站建设公司
  • 成都装修建材网站建设宁波专业网站建设怎么做
  • 北海网站建设网怎么推广自己的网站
  • 免费的网站平台天津智能网站建设哪家好
  • 一个虚拟主机可以做两个网站吧如何建立一个网站链接把文件信息存里
  • 天水网络推广搜索引擎优化有哪些要点
  • 做网站个体户经营范围影响网站速度的代码