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

建设网站坂田苏州官方网站建站

建设网站坂田,苏州官方网站建站,德国购物网站大全,wordpress标题不能空Rocketmq 事务消息API使用 使用TransactionMQProducer类。 实现TransactionListener 接口覆盖其方法executeLocalTransaction和checkLocalTransaction 即可。 其中executeLocalTransaction 执行本地方法和checkLocalTransaction 事务状态回查。 玩法 简历一张本地事务表&…

Rocketmq 事务消息API使用

使用TransactionMQProducer类。 实现TransactionListener 接口覆盖其方法executeLocalTransaction和checkLocalTransaction 即可。

其中executeLocalTransaction 执行本地方法和checkLocalTransaction 事务状态回查。

玩法

  1. 简历一张本地事务表,字段大概有(rocketmq事务id,业务事务id),
  2. 于executeLoalTransaction,利用数据库事务特性,和业务数据同时持久化到数据库。
  3. checkLocalTransaction. 按rocketmq事务id查询数据库,是否有对应的数据。

为什么需要本地事务表

保证可靠性。当业务事务提交后节点宕机。rocketmq同样也能回查到数据。

流程分析

事务消息源码分析 

实现原理是基于二阶段提交和定时事务状态回查实现的。

二阶段提交分析

涉及相关类

Producer

TransactionMQProducer

DefaultMQProducerImpl

TransactionListener

Broker

SendMessageProcessor

EndTransactionProcessor

分析流程

  1. 入口方法TransactionMQProducer.sendMessageInTransaction 投递事务消息
  2. 调用DefaultMQProducerImpl.sendMessageInTransaction
  3. 为消息头部增加事务消息标志,发送消息。
  4. Broker 入口方法 SendMessageProcessor#sendMessage检查消息头部是否有事务标记,有投递半消息。响应Producer 结果包括事务id
  5. Producer收到消息成功发送结果后,执行本地事务。并通知Broker 本地事务执行结果。
  6. Broker 入口方法EndTransactionProcessor#processRequest 。按收到结果做决定。若是事务提交则投递普通消息,删除半消息。若是事务回滚则删除半消息。

事务消息回查

RocketMQ 通过TramsactionalMessageCheckService 线程定时去检测RMQ_SYS_TRANS_HALF_TOPIC主题中的消息,回查消息的事务状态。TransactionalMessageCheckService 的检测频率默认为1分钟,可通过broker.conf文件中设置transactionCheckInterval 来改变默认值,单位为毫秒

public class TransactionalMessageCheckService extends ServiceThread {private static final Logger log = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);private BrokerController brokerController;public TransactionalMessageCheckService(BrokerController brokerController) {this.brokerController = brokerController;}//.... 省略代码@Overrideprotected void onWaitEnd() {long timeout = brokerController.getBrokerConfig().getTransactionTimeOut();int checkMax = brokerController.getBrokerConfig().getTransactionCheckMax();long begin = System.currentTimeMillis();log.info("Begin to check prepare message, begin time:{}", begin);this.brokerController.getTransactionalMessageService().check(timeout, checkMax, this.brokerController.getTransactionalMessageCheckListener());log.info("End to check prepare message, consumed time:{}", System.currentTimeMillis() - begin);}}

http://www.sczhlp.com/news/100796/

相关文章:

  • 广西建设职业技术学院管理工程系网站2014考试前培训时间易云巢做网站公司
  • 哪些网站的活动策划做的好百度快速收录seo工具软件
  • 网站开发团队 组建网站收录查询系统
  • CSP2025 游记
  • Luogu P14031 【MX-X20-T5】「FAOI-R7」连接时光 II
  • seo做的最好的网站排行企业网站备案管理系统
  • 当当网网站建设集团网站开发
  • 网站管理的主要工作有哪些网站设计内容
  • 服务网站建设公司接视频做的网网站
  • 收费抽奖网站做网站三网多少钱
  • 网站制作公司优势海南建设厅网站
  • 保定做网站西安北郊做网站
  • 天津网站建设电焊机中文一级a做爰片免费网站
  • 网站分级怎么做wordpress 文字背景
  • 第一周预习作业
  • 计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统 - 指南
  • csp 2025 油迹
  • 完整教程:JMeter基本介绍
  • wordpress速度确实差些泽成seo网站排名
  • 如果在网站做推广连接本地建设网站软件
  • 福田企业网站优化有用吗wordpress托管是什么
  • 如何做查询网站网站的维护步骤
  • rv
  • 国际网站建设工具零基础自己建网站
  • dede 网站模板建阳网站建设
  • 网站前端模板网站备案管谁要幕布
  • 做外卖那些网站好网站策划制作公司 北京
  • 重庆网站快速排名优化专门做财经的网站
  • seo推广网站有哪网页设计尺寸规范ps
  • 用eclipce做登录网站百度查重