强制路由
除了根据路由算法配置路由,SDK还支持通过注解@DynamicReadRoute指定读操作的路由。注解@DynamicReadRoute指定路由的参数:source,用于选择数据源,可以选择对应的枚举值:MongoSource.ACTIVE, MongoSource.LOCAL。
注解@DynamicReadRoute支持在方法、类上添加。
使用示例:
在方法上添加注解:
@DynamicRoute(source = MongoSource.ACTIVE) public Document queryFromActive() { Document queryCommand = new Document("find", collectionName).append("filter", new Document("_id", testExecuteCommandId)); log.info("query command : {}", queryCommand.toJson()); return mongoTemplate.executeCommand(queryCommand); }
在类上添加注解,此时该类的读方法都会路由到local对应的数据源上执行。
@DynamicRoute(source = MongoSource.LOCAL) @Service public class MongoService { @Autowired private MongoTemplate mongoTemplate; public List<RoleModel> findAll(Class<RoleModel> entityClass) { return mongoTemplate.findAll(entityClass); } public RoleModel insert() { return mongoTemplate.insert(new RoleModel("1001", "Role1001", 1001, "China1001")); } public DeleteResult remove() { return mongoTemplate.remove(new RoleModel("1011", "Role1011", 1011, "China1011")); } }