瀏覽代碼

远程配置代码整理

mcy 6 年之前
父節點
當前提交
a20960834b

+ 2 - 77
client-adapter/launcher/src/main/java/com/alibaba/otter/canal/adapter/launcher/monitor/remote/DbRemoteConfigLoader.java

@@ -1,6 +1,5 @@
 package com.alibaba.otter.canal.adapter.launcher.monitor.remote;
 package com.alibaba.otter.canal.adapter.launcher.monitor.remote;
 
 
-import java.io.File;
 import java.io.FileWriter;
 import java.io.FileWriter;
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
@@ -19,6 +18,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.otter.canal.common.utils.CommonUtils;
 import com.alibaba.otter.canal.common.utils.NamedThreadFactory;
 import com.alibaba.otter.canal.common.utils.NamedThreadFactory;
 import com.google.common.base.Joiner;
 import com.google.common.base.Joiner;
 import com.google.common.collect.MapMaker;
 import com.google.common.collect.MapMaker;
@@ -115,7 +115,7 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
      * @param content 文件内容
      * @param content 文件内容
      */
      */
     private void overrideLocalCanalConfig(String content) {
     private void overrideLocalCanalConfig(String content) {
-        try (FileWriter writer = new FileWriter(getConfPath() + "application.yml")) {
+        try (FileWriter writer = new FileWriter(CommonUtils.getConfPath() + "application.yml")) {
             writer.write(content);
             writer.write(content);
             writer.flush();
             writer.flush();
         } catch (Exception e) {
         } catch (Exception e) {
@@ -209,41 +209,6 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
         }
         }
     }
     }
 
 
-    private static boolean deleteDir(File dirFile) {
-        if (!dirFile.exists()) {
-            return false;
-        }
-
-        if (dirFile.isFile()) {
-            return dirFile.delete();
-        } else {
-            File[] files = dirFile.listFiles();
-            if (files == null || files.length == 0) {
-                return dirFile.delete();
-            }
-            for (File file : files) {
-                deleteDir(file);
-            }
-        }
-
-        return dirFile.delete();
-    }
-
-    /**
-     * 获取conf文件夹所在路径
-     *
-     * @return 路径地址
-     */
-    private String getConfPath() {
-        String classpath = this.getClass().getResource("/").getPath();
-        String confPath = classpath + "../conf/";
-        if (new File(confPath).exists()) {
-            return confPath;
-        } else {
-            return classpath;
-        }
-    }
-
     /**
     /**
      * 启动监听数据库变化
      * 启动监听数据库变化
      */
      */
@@ -280,44 +245,4 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
             logger.error(e.getMessage(), e);
             logger.error(e.getMessage(), e);
         }
         }
     }
     }
-
-    private class RemoteAdapterMonitorImpl implements RemoteAdapterMonitor {
-
-        @Override
-        public void onAdd(ConfigItem configItem) {
-            this.onModify(configItem);
-        }
-
-        @Override
-        public void onModify(ConfigItem configItem) {
-            String confPath = getConfPath();
-            String category = configItem.getCategory();
-            File categoryDir = new File(confPath + category);
-            if (!categoryDir.isDirectory()) {
-                boolean mkDirs = categoryDir.mkdirs();
-                if (!mkDirs) {
-                    logger.info("## Create adapter category dir error: {}", category);
-                    return;
-                }
-            }
-            String name = configItem.getName();
-            try (FileWriter writer = new FileWriter(
-                    confPath + category + "/" + configItem.getName())) {
-                writer.write(configItem.getContent());
-                writer.flush();
-                logger.info("## Loaded remote adapter config: {}/{}", category, name);
-            } catch (Exception e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public void onDelete(String name) {
-            File file = new File(getConfPath() + name);
-            if (file.exists()) {
-                deleteDir(file);
-                logger.info("## Deleted and reloaded remote adapter config: {}", name);
-            }
-        }
-    }
 }
 }

+ 56 - 0
client-adapter/launcher/src/main/java/com/alibaba/otter/canal/adapter/launcher/monitor/remote/RemoteAdapterMonitorImpl.java

@@ -0,0 +1,56 @@
+package com.alibaba.otter.canal.adapter.launcher.monitor.remote;
+
+import com.alibaba.otter.canal.common.utils.CommonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+
+/**
+ * 远程配置监听器实现
+ *
+ * @author rewerma 2019-01-25 下午05:20:16
+ * @version 1.0.0
+ */
+public class RemoteAdapterMonitorImpl implements RemoteAdapterMonitor {
+
+    private static final Logger logger = LoggerFactory.getLogger(RemoteAdapterMonitorImpl.class);
+
+    @Override
+    public void onAdd(ConfigItem configItem) {
+        this.onModify(configItem);
+    }
+
+    @Override
+    public void onModify(ConfigItem configItem) {
+        String confPath = CommonUtils.getConfPath();
+        String category = configItem.getCategory();
+        File categoryDir = new File(confPath + category);
+        if (!categoryDir.isDirectory()) {
+            boolean mkDirs = categoryDir.mkdirs();
+            if (!mkDirs) {
+                logger.info("## Create adapter category dir error: {}", category);
+                return;
+            }
+        }
+        String name = configItem.getName();
+        try (FileWriter writer = new FileWriter(confPath + category + "/" + configItem.getName())) {
+            writer.write(configItem.getContent());
+            writer.flush();
+            logger.info("## Loaded remote adapter config: {}/{}", category, name);
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public void onDelete(String name) {
+        File file = new File(CommonUtils.getConfPath() + name);
+        if (file.exists()) {
+            CommonUtils.deleteDir(file);
+            logger.info("## Deleted and reloaded remote adapter config: {}", name);
+        }
+    }
+
+}

+ 53 - 0
common/src/main/java/com/alibaba/otter/canal/common/utils/CommonUtils.java

@@ -0,0 +1,53 @@
+package com.alibaba.otter.canal.common.utils;
+
+import java.io.File;
+
+/**
+ * 通用工具类
+ *
+ * @author rewerma 2019-01-25 下午05:20:16
+ * @version 1.0.0
+ */
+public class CommonUtils {
+
+    /**
+     * 获取conf文件夹所在路径
+     *
+     * @return 路径地址
+     */
+    public static String getConfPath() {
+        String classpath = CommonUtils.class.getResource("/").getPath();
+        String confPath = classpath + "../conf/";
+        if (new File(confPath).exists()) {
+            return confPath;
+        } else {
+            return classpath;
+        }
+    }
+
+    /**
+     * 删除文件夹
+     *
+     * @param dirFile 文件夹对象
+     * @return 是否删除成功
+     */
+    public static boolean deleteDir(File dirFile) {
+        if (!dirFile.exists()) {
+            return false;
+        }
+
+        if (dirFile.isFile()) {
+            return dirFile.delete();
+        } else {
+            File[] files = dirFile.listFiles();
+            if (files == null || files.length == 0) {
+                return dirFile.delete();
+            }
+            for (File file : files) {
+                deleteDir(file);
+            }
+        }
+
+        return dirFile.delete();
+    }
+}

+ 2 - 71
deployer/src/main/java/com/alibaba/otter/canal/deployer/monitor/remote/DbRemoteConfigLoader.java

@@ -1,7 +1,6 @@
 package com.alibaba.otter.canal.deployer.monitor.remote;
 package com.alibaba.otter.canal.deployer.monitor.remote;
 
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayInputStream;
-import java.io.File;
 import java.io.FileWriter;
 import java.io.FileWriter;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.sql.Connection;
 import java.sql.Connection;
@@ -18,6 +17,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.otter.canal.common.utils.CommonUtils;
 import com.alibaba.otter.canal.common.utils.NamedThreadFactory;
 import com.alibaba.otter.canal.common.utils.NamedThreadFactory;
 import com.alibaba.otter.canal.deployer.CanalConstants;
 import com.alibaba.otter.canal.deployer.CanalConstants;
 import com.google.common.base.Joiner;
 import com.google.common.base.Joiner;
@@ -101,7 +101,7 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
      * @param content 远程配置内容文本
      * @param content 远程配置内容文本
      */
      */
     private void overrideLocalCanalConfig(String content) {
     private void overrideLocalCanalConfig(String content) {
-        try (FileWriter writer = new FileWriter(getConfPath() + "canal.properties")) {
+        try (FileWriter writer = new FileWriter(CommonUtils.getConfPath() + "canal.properties")) {
             writer.write(content);
             writer.write(content);
             writer.flush();
             writer.flush();
         } catch (Exception e) {
         } catch (Exception e) {
@@ -213,26 +213,6 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
         }
         }
     }
     }
 
 
-    private static boolean deleteDir(File dirFile) {
-        if (!dirFile.exists()) {
-            return false;
-        }
-
-        if (dirFile.isFile()) {
-            return dirFile.delete();
-        } else {
-            File[] files = dirFile.listFiles();
-            if (files == null || files.length == 0) {
-                return dirFile.delete();
-            }
-            for (File file : files) {
-                deleteDir(file);
-            }
-        }
-
-        return dirFile.delete();
-    }
-
     /**
     /**
      * 监听 canal 主配置和 instance 配置变化
      * 监听 canal 主配置和 instance 配置变化
      *
      *
@@ -281,53 +261,4 @@ public class DbRemoteConfigLoader implements RemoteConfigLoader {
         }
         }
     }
     }
 
 
-    /**
-     * 获取conf文件夹所在路径
-     *
-     * @return 路径地址
-     */
-    private String getConfPath() {
-        String classpath = this.getClass().getResource("/").getPath();
-        String confPath = classpath + ".." + File.separator + "conf" + File.separator;
-        if (new File(confPath).exists()) {
-            return confPath;
-        } else {
-            return classpath;
-        }
-    }
-
-    /**
-     * 远程xxx/instance.properties配置监听器实现
-     */
-    private class RemoteInstanceMonitorImpl implements RemoteInstanceMonitor {
-
-        @Override
-        public void onAdd(ConfigItem configItem) {
-            this.onModify(configItem);
-        }
-
-        @Override
-        public void onModify(ConfigItem configItem) {
-            File instanceDir = new File(getConfPath() + configItem.getName());
-            if (!instanceDir.exists()) {
-                instanceDir.mkdirs();
-            }
-            try (FileWriter writer = new FileWriter(getConfPath() + configItem.getName() + "/instance.properties")) {
-                writer.write(configItem.getContent());
-                writer.flush();
-                logger.info("## Loaded remote instance config: {}/instance.properties ", configItem.getName());
-            } catch (Exception e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public void onDelete(String instanceName) {
-            File file = new File(getConfPath() + instanceName + "/");
-            if (file.exists()) {
-                deleteDir(file);
-                logger.info("## Deleted and loaded remote instance config: {} ", instanceName);
-            }
-        }
-    }
 }
 }

+ 55 - 0
deployer/src/main/java/com/alibaba/otter/canal/deployer/monitor/remote/RemoteInstanceMonitorImpl.java

@@ -0,0 +1,55 @@
+package com.alibaba.otter.canal.deployer.monitor.remote;
+
+import java.io.File;
+import java.io.FileWriter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.alibaba.otter.canal.common.utils.CommonUtils;
+
+/**
+ * 远程xxx/instance.properties配置监听器实现
+ *
+ * @author rewerma 2019-01-25 下午05:20:16
+ * @version 1.0.0
+ */
+public class RemoteInstanceMonitorImpl implements RemoteInstanceMonitor {
+
+    private static final Logger logger = LoggerFactory.getLogger(RemoteInstanceMonitorImpl.class);
+
+    @Override
+    public void onAdd(ConfigItem configItem) {
+        this.onModify(configItem);
+    }
+
+    @Override
+    public void onModify(ConfigItem configItem) {
+        String confDir = CommonUtils.getConfPath() + configItem.getName();
+        File instanceDir = new File(confDir);
+        if (!instanceDir.exists()) {
+            boolean mkDirs = instanceDir.mkdirs();
+            if (!mkDirs) {
+                logger.info("## Error to create instance config dir: {}", configItem.getName());
+                return;
+            }
+        }
+        try (FileWriter writer = new FileWriter(confDir + "/instance.properties")) {
+            writer.write(configItem.getContent());
+            writer.flush();
+            logger.info("## Loaded remote instance config: {}/instance.properties ", configItem.getName());
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public void onDelete(String instanceName) {
+        File file = new File(CommonUtils.getConfPath() + instanceName + "/");
+        if (file.exists()) {
+            CommonUtils.deleteDir(file);
+            logger.info("## Deleted and loaded remote instance config: {} ", instanceName);
+        }
+    }
+
+}