summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <default@DESKTOP-7FEGRP2>2018-11-20 09:53:10 +0800
committerdefault <default@DESKTOP-7FEGRP2>2018-11-20 09:53:10 +0800
commit35a0a50ec9fd28534cda4e7f3af57def26b7a72f (patch)
treeb40b232b88dd08caa8137a9f894dabe5739b9bf6
parentd8d79129191548793ad2a59ff4c36c5bee7b41ed (diff)
update
-rw-r--r--nms_sync/src/com/nms/main/SyncData.java84
1 files changed, 45 insertions, 39 deletions
diff --git a/nms_sync/src/com/nms/main/SyncData.java b/nms_sync/src/com/nms/main/SyncData.java
index 9f6a745..cc24cea 100644
--- a/nms_sync/src/com/nms/main/SyncData.java
+++ b/nms_sync/src/com/nms/main/SyncData.java
@@ -26,6 +26,7 @@ import com.nms.thread.SyncThread;
*
*/
public class SyncData{
+ private static Logger logger = Logger.getLogger(SyncData.class);
// 线程变量记录任务结果修改的任务id
private static final ThreadLocal<Set<Long>> threadLocalUpdateMissionIds = new ThreadLocal<Set<Long>>();
// 线程变量记录任务结果新增的任务id
@@ -37,46 +38,51 @@ public class SyncData{
public static void main(String[] args) {
- Logger logger = Logger.getLogger(SyncData.class);
- logger.info("同步程序开始启动");
- //从配置文件获取数据库连接信息
- PropKit.use("db.properties");
- //创建主数据库数据源
- DruidPlugin masterDruid=new DruidPlugin(PropKit.get("dburl"),PropKit.get("dbusername"),PropKit.get("dbpassword"));
- masterDruid.setInitialSize(Integer.valueOf(PropKit.get("dbInitialSize")));
- masterDruid.setMaxActive(Integer.valueOf(PropKit.get("dbMaxActive")));
- masterDruid.setMinIdle(Integer.valueOf(PropKit.get("dbMinIdle")));
- masterDruid.setMaxWait(Integer.valueOf(PropKit.get("dbMaxWait")));
- masterDruid.setRemoveAbandoned(true);
- masterDruid.setRemoveAbandonedTimeoutMillis(Integer.valueOf(PropKit.get("dbRemoveAbandonedTimeout")));
- ActiveRecordPlugin masterArp=new ActiveRecordPlugin("masterDataSource",masterDruid);
- masterArp.setShowSql(true);
- masterDruid.start();
- masterArp.start();
- logger.info("加载配置文件 设置当前同步 masterDataSource 完成");
- List<SyncDbInfo> syncDbInfos = SyncDbInfo.dao.use("masterDataSource").find("select * from sync_db_info");
- logger.info("数据库获取其它分库 数据库连接信息"+JSON.toJSONString(syncDbInfos));
- if(syncDbInfos!=null&&syncDbInfos.size()>0){
- //创建其它数据源的连接
- Conn.createConn(syncDbInfos);
- logger.info("分库数据库连接池创建完成");
- // 定时周期执行线程池 用于周期执行线程的运行
- ScheduledExecutorService scheduleService = Executors.newScheduledThreadPool(syncDbInfos.size());
- logger.info("创建线程池完毕 数量大小为"+syncDbInfos.size());
- // 使用scheduleWithFixedDleay在上一个线程任务执行完成后 5分钟执行下一次任务
- for(SyncDbInfo syncDbInfo : syncDbInfos){
- // 主库向分库同步数据
- SyncThread syncThread = Duang.duang(new SyncThread(syncDbInfo));
- logger.info("创建主库同步分库线程执行任务");
- scheduleService.scheduleWithFixedDelay(syncThread, 0, Integer.valueOf(PropKit.use("config.properties").get("syncMaterToSlaveTime")), TimeUnit.MILLISECONDS);
- // 分库向主库同步数据
- logger.info("创建分库数据同步到主库线程执行任务");
- SyncSlaveToMasterThread syncSlaveToMasterThread = Duang.duang(new SyncSlaveToMasterThread(syncDbInfo));
- scheduleService.scheduleWithFixedDelay(syncSlaveToMasterThread, 0, Integer.valueOf(PropKit.use("config.properties").get("syncSlaveToMaterTime")), TimeUnit.MILLISECONDS);
+ try {
+ Logger logger = Logger.getLogger(SyncData.class);
+ logger.info("同步程序开始启动");
+ //从配置文件获取数据库连接信息
+ PropKit.use("db.properties");
+ //创建主数据库数据源
+ DruidPlugin masterDruid=new DruidPlugin(PropKit.get("dburl"),PropKit.get("dbusername"),PropKit.get("dbpassword"));
+ masterDruid.setInitialSize(Integer.valueOf(PropKit.get("dbInitialSize")));
+ masterDruid.setMaxActive(Integer.valueOf(PropKit.get("dbMaxActive")));
+ masterDruid.setMinIdle(Integer.valueOf(PropKit.get("dbMinIdle")));
+ masterDruid.setMaxWait(Integer.valueOf(PropKit.get("dbMaxWait")));
+ masterDruid.setRemoveAbandoned(true);
+ masterDruid.setRemoveAbandonedTimeoutMillis(Integer.valueOf(PropKit.get("dbRemoveAbandonedTimeout")));
+ ActiveRecordPlugin masterArp=new ActiveRecordPlugin("masterDataSource",masterDruid);
+ masterArp.setShowSql(true);
+ masterDruid.start();
+ masterArp.start();
+ logger.info("加载配置文件 设置当前同步 masterDataSource 完成");
+ List<SyncDbInfo> syncDbInfos = SyncDbInfo.dao.use("masterDataSource").find("select * from sync_db_info");
+ logger.info("数据库获取其它分库 数据库连接信息"+JSON.toJSONString(syncDbInfos));
+ if(syncDbInfos!=null&&syncDbInfos.size()>0){
+ //创建其它数据源的连接
+ Conn.createConn(syncDbInfos);
+ logger.info("分库数据库连接池创建完成");
+ // 定时周期执行线程池 用于周期执行线程的运行
+ ScheduledExecutorService scheduleService = Executors.newScheduledThreadPool(syncDbInfos.size());
+ logger.info("创建线程池完毕 数量大小为"+syncDbInfos.size());
+ // 使用scheduleWithFixedDleay在上一个线程任务执行完成后 5分钟执行下一次任务
+ for(SyncDbInfo syncDbInfo : syncDbInfos){
+ // 主库向分库同步数据
+ SyncThread syncThread = Duang.duang(new SyncThread(syncDbInfo));
+ logger.info("创建主库同步分库线程执行任务");
+ scheduleService.scheduleWithFixedDelay(syncThread, 0, Integer.valueOf(PropKit.use("config.properties").get("syncMaterToSlaveTime")), TimeUnit.MILLISECONDS);
+ // 分库向主库同步数据
+ logger.info("创建分库数据同步到主库线程执行任务");
+ SyncSlaveToMasterThread syncSlaveToMasterThread = Duang.duang(new SyncSlaveToMasterThread(syncDbInfo));
+ scheduleService.scheduleWithFixedDelay(syncSlaveToMasterThread, 0, Integer.valueOf(PropKit.use("config.properties").get("syncSlaveToMaterTime")), TimeUnit.MILLISECONDS);
+ }
+ }else{
+ logger.info("获取同步记录信息失败 请检查数据库数据信息");
+ logger.error("获取同步记录信息失败 请检查数据库数据信息");
}
- }else{
- logger.info("获取同步记录信息失败 请检查数据库数据信息");
- logger.error("获取同步记录信息失败 请检查数据库数据信息");
+ } catch(Exception e) {
+ e.printStackTrace();
+ logger.error("数据同步启动发生异常 信息为:"+e.getMessage());
}
}