RocketMQ事务消息

使用方法
RocketMQ事务消息是在分布式系统中保证数据最终一致性的,两阶段提交的消息实现,确保了本地事务和发送消息的原子性(要么同时成功,要么同时失败)。

具体实现是通过发送一条“半”消息(half message)到broker,半消息对消费者不可见,发送之后生产者开始执行本地事务,执行本地事务之后可以返回3种状态:

  • 提交(COMMIT_MESSAGE):消息真正提交,可以被消费了
  • 回滚(ROLLBACK_MESSAGE):消息将会被删除,不会被消费到
  • 未知(UNKNOW):还需要进一步执行回查方法,回查方法也会返回这3种状态,如果仍返回未知状态,隔一段时间会再执行回查方法

回查方法如果一直返回unknow,不会无限回查下去,有一个最大回查次数的限制,默认是15次,可以通过broker的配置transactionCheckMax来修改最大回查次数。

回查时间间隔也是可配的,可以在broker端配置:transactionTimeout,默认60s,也可以在每条msg的消息属性里配置,CHECK_IMMUNITY_TIME_IN_SEC

你可能感兴趣的:(rocketMQ,消息队列,中间件,分布式,java)