更新时间:2022-12-27 GMT+08:00
分享

强制路由

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

相关文档