Seata中还有一个异步提交的流程中,enableBranchAsyncRemove参数实际是没有起作用的,因为isAsync参数始终为false
在 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 中启用异步提交和异步删除,可以参考以上代码片段进行设置。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。