RocketMq-事务消息原理

2020-12-18  本文已影响0人  麦大大吃不胖

事务消息原理

by shihang.mai

rocketMq用的是2pc

rocketMq事务消息原理
  1. producer发送消息前,先开启事务,并设置回调方法
  2. 发送一个半消息(实际是完全的msg,这里只是一个概念),broker将msg保存到Topic:half-messgae,即保存到磁盘上,然后返回ack给producer
  3. producer收到确认后,执行本地的n个方法

使用时核心代码:

producer.setTransactionListener(new TransactionListener() {
            @Override
            public LocalTransactionState executeLocalTransaction(Message message, Object o) {
                //执行本地事务
                /**
                 * 回滚 LocalTransactionState.ROLLBACK_MESSAGE;
                 * broker定时检查producer事务状态 LocalTransactionState.UNKNOW;
                 * 成功 LocalTransactionState.COMMIT_MESSAGE
                 */
                //
                // LocalTransactionState.ROLLBACK_MESSAGE;
                //LocalTransactionState.UNKNOW;
                return LocalTransactionState.COMMIT_MESSAGE;
            }

            @Override
            public LocalTransactionState checkLocalTransaction(MessageExt messageExt) {
                //broker端回调监测本地事务
                return LocalTransactionState.COMMIT_MESSAGE;
            }
        });

rocketMq顺序消费

rocketMq顺序消费场景
上一篇 下一篇

猜你喜欢

热点阅读