多活高可用服务 MAS
多活高可用服务 MAS
- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 开始使用多活高可用服务
- 功能模块
- 命名空间
- 多活管理
- 应用管理
- 监控管理
-
工作流管理
- 工作流简介
- 工作流模板
- 创建工作流
- 编排工作流
- 导入工作流
-
工作流插件说明
- DRS灾备切换
- DRS检查RTO&RPO
- RDS实例读写设置
- RDS实例重启
- RDS实例创建备份
- DWS检查容灾任务
- DWS容灾操作
- DCS开启/关闭白名单
- OBS桶存量比较
- OBS跨区域复制任务设置
- OBS桶策略操作授权用户
- DNS添加记录集
- DNS删除记录集
- DNS公网域名记录集权重设置
- Smart Connect任务操作
- 人工卡点
- 等待
- AOM作业执行
- 混沌实验执行
- PerfTest测试任务启动/停止
- HTTP请求
- MAS多活管理切换/回切
- DDM实例创建备份
- DDM实例读写设置
- RDS实例指定用户读写设置
- RDS检查容灾复制状态
- RDS灾备实例升主
- RDS修改实例参数
- DRS任务操作
- DRS检查任务方向和状态
- RDS自动备份策略设置
- RDS检查实例备份信息
- DRS检查任务信息
- DRS数据级/对象级对比
- OpenGauss容灾操作
- OpenGauss检查容灾信息
- 执行工作流
- 查看工作流执行详情
- 编辑工作流
- 复制工作流
- 删除工作流
- 关注工作流
- 混沌工程
- 应用韧性Hub
- 凭证管理
- 事件监控
- 查看审计日志
- 权限管理
- 最佳实践
- 开发指南
- 常见问题
- 视频帮助
- 文档下载
- 通用参考
本文导读
展开导读
链接复制成功!
事务中使用强制路由
SDK不支持分布式事务,事务与强制指定路由@DynamicRoute同时使用时,以第一条sql选择的数据源为准。
后续sql,即使使用@DynamicRoute指定数据源,也不生效。同一个事务中,不允许访问不同的数据库。
如下,service层的updateUser方法,开启了事务,并且里面有两个接口,第一个userReopository2上指定路由“dc2”,第二个userReopository2上指定路由“dc1”,此时以第一个接口中的注解指定的路由为准,使用“dc2”的数据源。
@Slf4j @Repository @javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT") @DynamicRoute(source = "dc1") public class UserRepository extends AbstractUserRepository { public User update(User user) { return this.updateById(user); } } @Slf4j @Repository @javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT") @DynamicRoute(source = "dc2") public class UserRepository2 extends AbstractUserRepository { public User update(User user) { return this.updateById(user); } } /** * UserService Class * * @since 2022-08-22 */ @Slf4j @org.springframework.stereotype.Service("UserService") @javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, 1.5.1-SNAPSHOT") public class UserService implements IUserService { // auto generated code @Autowired private UserRepository userRepository; @Autowired private UserRepository2 userRepository2; /** * UpdateUserById Method * * @param user user * @return User */ @Transactional public User updateUserById(User user) { userRepository2.update(user); return userRepository.update(user); } }
父主题: 强制路由