Ejemplo n.º 1
0
  /** 从Diamond配置中心提取信息,构造TAtomDataSource、构造有优先级信息的读写DBSelector ---add by mazhidan.pt */
  public void init() {
    // 警告: 不要在构造DefaultDiamondManager时就注册ManagerListener(比如:configReceiver)
    // 也就是说,不要这样用: new DefaultDiamondManager(dbGroupKey, configReceiver),
    // 而是要设成null,等第一次取得信息并解析完成后再注册,这样可以不用同步,避免任何与并发相关的问题,
    // 因为有可能在第一次刚取回信息后,Diamond配置中心那边马上修改了记录,导致ManagerListener这个线程立刻收到信息,
    // 造成初始化线程和ManagerListener线程同时解析信息。
    configFactory = new DefaultConfigDataHandlerFactory();
    globalHandler = configFactory.getConfigDataHandler(tGroupDataSource.getFullDbGroupKey(), null);

    String dsWeightCommaStr =
        globalHandler.getData(
            tGroupDataSource.getConfigReceiveTimeout(),
            ConfigDataHandler.FIRST_CACHE_THEN_SERVER_STRATEGY);

    // extra config
    extraFactory = new DefaultConfigDataHandlerFactory();
    extraHandler =
        extraFactory.getConfigDataHandler(tGroupDataSource.getDbGroupExtraConfigKey(), null);
    String extraConfig =
        extraHandler.getData(
            tGroupDataSource.getConfigReceiveTimeout(),
            ConfigDataHandler.FIRST_CACHE_THEN_SERVER_STRATEGY);

    if (extraConfig != null) {
      parseExtraConfig(extraConfig);
      extraHandler.addListener(extraGroupConfigReceiver, null);
    }

    List<DataSourceWrapper> dswList = parse2DataSourceWrapperList(dsWeightCommaStr);
    resetByDataSourceWrapper(dswList);
    globalHandler.addListener(configReceiver, null);
  }
 public void init() {
   configFactory = new DefaultConfigDataHandlerFactory();
   Map<String, String> config = new HashMap<String, String>();
   config.put("group", DruidConstants.DEFAULT_DIAMOND_GROUP);
   passwdHandler =
       configFactory.getConfigDataHandlerWithListenerListCE(
           passwdConfDataId,
           passwdConfListener,
           Executors.newSingleThreadScheduledExecutor(),
           config);
 }