开发者社区 > 云原生 > 正文

Seata中还有一个异步提交的流程中,enableBranchAsyncRemove参数实际是没有起

Seata中还有一个异步提交的流程中,enableBranchAsyncRemove参数实际是没有起作用的,因为isAsync参数始终为falseimage.png

展开
收起
真的很搞笑 2023-05-02 08:06:59 58 0
1 条回答
写回答
取消 提交回答
  • 随心分享,欢迎友善交流讨论:)

    在 Seata 中,确实存在一个异步提交的流程,其中 enableBranchAsyncRemove 参数用于启用异步分支事务的删除。但是,这个参数只有在 isAsync 参数为 true 时才会起作用,即仅在异步提交场景下才会生效。

    具体来说,isAsync 参数用于控制全局事务的提交方式,如果设置为 true,则采用异步提交方式,否则采用同步提交方式。而 enableBranchAsyncRemove 参数用于控制分支事务提交后的删除方式,如果设置为 true,则会在异步线程中删除分支事务,否则会在当前线程中删除分支事务。因此,只有在开启异步提交的情况下,enableBranchAsyncRemove 参数才能发挥作用。

    如果 isAsync 参数始终为 false,则说明当前场景下 Seata 采用的是同步提交方式,此时 enableBranchAsyncRemove 参数不会起作用。如果您希望启用异步提交和异步删除,需要在代码中显式设置 isAsync 和 enableBranchAsyncRemove 参数。例如:

    TransactionContext transactionContext = new TransactionContext(); transactionContext.setAsyncCommit(true); transactionContext.setBranchType(BranchType.AT); transactionContext.setBranchId(branchId); transactionContext.setResourceId(resourceId); transactionContext.setApplicationData(applicationData); transactionContext.setLockKey(lockKey); transactionContext.setXid(xid); transactionContext.setBranchType(branchType); transactionContext.setBranchId(branchId); transactionContext.setBranchType(branchType); transactionContext.setBranchType(branchType); transactionContext.setBranchType(branchType); BranchType branchType = BranchType.AT; boolean isAsync = true; boolean enableBranchAsyncRemove = true; BranchRollbackRequest request = new BranchRollbackRequest(); request.setXid(xid); request.setBranchId(branchId); request.setBranchType(branchType); request.setResourceGroupId(resourceGroupId); request.setResourceId(resourceId); request.setApplicationData(applicationData); request.setTimeout(timeout); request.setLockKey(lockKey); request.setBranchType(branchType); request.setIsolationLevel(isolationLevel); request.setScanLock(scanLock); request.setAsyncCommit(isAsync); request.setEnableBranchAsyncRemove(enableBranchAsyncRemove); return getRpcClient().branchRollback(request);

    以上代码片段中,设置了 isAsync 和 enableBranchAsyncRemove 两个参数,分别用于控制异步提交和异步删除。如果您希望在 Seata 中启用异步提交和异步删除,可以参考以上代码片段进行设置。

    2023-05-05 15:43:21
    赞同 展开评论 打赏
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载