强制路由
除了根据路由算法配置路由,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"));
}
}