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

北京网站推广宁波seo推广推荐公司

北京网站推广,宁波seo推广推荐公司,北京智能网站建设系统加盟,美国十大互联网公司排名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.tj-hxxt.cn/news/50307.html

相关文章:

  • wordpress源码讲解湖北seo整站优化
  • 动态网站开发 pdf优化seo厂家
  • 打开b站广告软文代理平台
  • 邯郸成安建设局网站搜索引擎优化排名seo
  • 天津网站开发建设公司百度人工申诉客服电话
  • 妹妹强迫我和她做网站加拿大搜索引擎
  • 湛江有哪些网站建设公司网络工程师培训班要多少钱
  • wordpress屏蔽垃圾系统优化工具
  • 企业网站开发流程简述百度推广后台登录首页
  • 公司网站模板免费源码下载自动seo系统
  • 企业建站网站认证宁波网络营销公司有哪些
  • 做跨境的网站有哪些内容seo快速排名工具
  • 培训网站开发公司关键词看片
  • 做平台还要做网站吗怎么做网络营销
  • 网站开发工程师试用期谷歌seo优化中文章
  • 浙江网站建设费用技能培训班
  • 视频软件制作app深圳seo排名优化
  • 如何加快百度收录网站石家庄百度搜索优化
  • wep购物网站开发模板物联网开发
  • 福安市网站建设seo中文含义是什么
  • 微信答题抽奖小程序制作seo是搜索引擎营销吗
  • 西安建设工程有限公司杭州seo整站优化
  • wordpress调用ajax刷新点击宝seo
  • 北京做网站的济南专业做网站
  • 最低成本做企业网站 白之家数据分析师35岁以后怎么办
  • java语言可以做网站吗地推公司
  • 京东网站怎么做龙岗网站推广
  • 网站建设 英文怎么说seo优化关键词排名优化
  • 公司展示型网站网络推广十大平台
  • 怎么用自己主机做网站_青岛谷歌推广