Search in sources :

Example 1 with PlainCanalInstanceGenerator

use of com.alibaba.otter.canal.instance.manager.PlainCanalInstanceGenerator in project canal by alibaba.

the class CanalController method initGlobalConfig.

private InstanceConfig initGlobalConfig(Properties properties) {
    String adminManagerAddress = getProperty(properties, CanalConstants.CANAL_ADMIN_MANAGER);
    InstanceConfig globalConfig = new InstanceConfig();
    String modeStr = getProperty(properties, CanalConstants.getInstanceModeKey(CanalConstants.GLOBAL_NAME));
    if (StringUtils.isNotEmpty(adminManagerAddress)) {
        // 如果指定了manager地址,则强制适用manager
        globalConfig.setMode(InstanceMode.MANAGER);
    } else if (StringUtils.isNotEmpty(modeStr)) {
        globalConfig.setMode(InstanceMode.valueOf(StringUtils.upperCase(modeStr)));
    }
    String lazyStr = getProperty(properties, CanalConstants.getInstancLazyKey(CanalConstants.GLOBAL_NAME));
    if (StringUtils.isNotEmpty(lazyStr)) {
        globalConfig.setLazy(Boolean.valueOf(lazyStr));
    }
    String managerAddress = getProperty(properties, CanalConstants.getInstanceManagerAddressKey(CanalConstants.GLOBAL_NAME));
    if (StringUtils.isNotEmpty(managerAddress)) {
        if (StringUtils.equals(managerAddress, "${canal.admin.manager}")) {
            managerAddress = adminManagerAddress;
        }
        globalConfig.setManagerAddress(managerAddress);
    }
    String springXml = getProperty(properties, CanalConstants.getInstancSpringXmlKey(CanalConstants.GLOBAL_NAME));
    if (StringUtils.isNotEmpty(springXml)) {
        globalConfig.setSpringXml(springXml);
    }
    instanceGenerator = destination -> {
        InstanceConfig config = instanceConfigs.get(destination);
        if (config == null) {
            throw new CanalServerException("can't find destination:" + destination);
        }
        if (config.getMode().isManager()) {
            PlainCanalInstanceGenerator instanceGenerator = new PlainCanalInstanceGenerator(properties);
            instanceGenerator.setCanalConfigClient(managerClients.get(config.getManagerAddress()));
            instanceGenerator.setSpringXml(config.getSpringXml());
            return instanceGenerator.generate(destination);
        } else if (config.getMode().isSpring()) {
            SpringCanalInstanceGenerator instanceGenerator = new SpringCanalInstanceGenerator();
            instanceGenerator.setSpringXml(config.getSpringXml());
            return instanceGenerator.generate(destination);
        } else {
            throw new UnsupportedOperationException("unknow mode :" + config.getMode());
        }
    };
    return globalConfig;
}
Also used : PlainCanalInstanceGenerator(com.alibaba.otter.canal.instance.manager.PlainCanalInstanceGenerator) SpringCanalInstanceGenerator(com.alibaba.otter.canal.instance.spring.SpringCanalInstanceGenerator) CanalServerException(com.alibaba.otter.canal.server.exception.CanalServerException)

Aggregations

PlainCanalInstanceGenerator (com.alibaba.otter.canal.instance.manager.PlainCanalInstanceGenerator)1 SpringCanalInstanceGenerator (com.alibaba.otter.canal.instance.spring.SpringCanalInstanceGenerator)1 CanalServerException (com.alibaba.otter.canal.server.exception.CanalServerException)1