GitHub user panwuji edited a discussion: 阻塞本地事务(线程睡眠模拟),事务消息回查未触发,线程重新活跃后提交事务报错

服务端:5.1.1
客户端:rocketmq-client-java(5.0.5)
参考官网demo:https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage
修改为
`private static boolean doLocalTransaction() {`
`    try {`
`        Thread.sleep(60000);`
`    } catch (InterruptedException e) {`
`        throw new RuntimeException(e);`
`    }`
`    return true;`
`}`

> boolean localTransactionOk = doLocalTransaction();
        if (localTransactionOk) {
            try {
                transaction.commit();
                log.info("事务提交成功");
            } catch (ClientException e) {
                // 业务可以自身对实时性的要求选择是否重试,如果放弃重试,可以依赖事务消息回查机制进行事务状态的提交
                log.error("事务提交失败:", e);
            }
        } else {
            try {
                transaction.rollback();
                log.info("事务回滚完成");
            } catch (ClientException e) {
                // 建议记录异常信息,回滚异常时可以无需重试,依赖事务消息回查机制进行事务状态的提交
                log.error("事务回滚失败:", e);
            }
        }

60s睡眠期后,正常提交,报错如下,期间没有进行事务回查
org.apache.rocketmq.client.apis.ClientException: 
[request-id=c936d307-6d8c-477d-a74e-a9eadaa95cd7, response-code=50001] 
org.apache.rocketmq.proxy.common.ProxyException: cannot found transaction data


GitHub link: https://github.com/apache/rocketmq/discussions/6976

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@rocketmq.apache.org

Reply via email to