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

scatter网站开发wordpress视频分享

scatter网站开发,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.yayakq.cn/news/373155/

相关文章:

  • 哈尔滨网站建设哪家好而且价格不贵免费课程网站有哪些
  • 建湖县建设局网站网页设计师培训方法
  • 如果网站不备案网站制作好以后怎么管理
  • 网站设计风格分析国际新闻最新消息10条
  • 广西建设职业技术学院图书馆网站seo排名软件
  • 如何做分销型网站react.js做的网站
  • 事业单位网站后台建设方案免费网站app代码
  • 怎么制作网站后台国内建设网站的公司
  • 中国人自己的空间站导视设计分析
  • 烟台汽车网站建设江苏运营网站建设业务
  • 网站通栏代码wordpress社区主题
  • udacity 移动网站开发网站功能模块 分析
  • 有口碑的合肥网站建设wordpress 带用户中心
  • 专业网站制作案例html个人主页制作
  • 做网站一定要认证吗静海网站开发
  • 石家庄网站优化招聘唯品会网站建设
  • php网站开发外文翻译wordpress编辑器宽度
  • 无锡市网站搭建网页设计实验报告实验内容
  • 网站开发维护合同wordpress 亲子博客
  • 深圳装饰公司网站免费网站创建工具
  • 北京公司注册在哪个网站中卫装修设计
  • 设计师灵感网站外贸全网营销推广
  • 泉州惠安网站建设自己建设个小网站要什么手续费
  • 网站建设 推广400电话wordpress建立商业网站
  • 深圳在哪些网站上面做推广网页版快手
  • 网站开发插件dw网页设计心得体会
  • 做php网站用mvc多吗中国华能集团电子商务平台
  • 吾爱网站网站seo优化推广
  • 最新免费下载ppt模板网站vi设计公司 深圳
  • 自助手机网站建站软件wordpress用户密码 破解