浏览代码

项目功能优化

liukaixiong 4 年之前
父节点
当前提交
083977b74b
共有 24 个文件被更改,包括 321 次插入59 次删除
  1. 10 3
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/KafkaMonitorAutoConfiguration.java
  2. 43 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/MonitorRuleFactory.java
  3. 1 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/consumer/KafkaMonitorConsumerListener.java
  4. 2 1
      jay-monitor-data-client/src/main/resources/META-INF/spring.factories
  5. 19 6
      jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/MonitorSendProducerTest.java
  6. 1 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/MonitorServerApplication.java
  7. 6 11
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/MybatisConfig.java
  8. 22 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/controllers/DebugController.java
  9. 39 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/ChangeConsumer.java
  10. 8 1
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/DataIdFactory.java
  11. 6 3
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/IdGenerateService.java
  12. 3 3
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/DayIdGenerate.java
  13. 6 8
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/HourIdGenerate.java
  14. 31 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/thread/DefaultThreadFactory.java
  15. 23 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/thread/TaskRunnable.java
  16. 4 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractSplitDataProcess.java
  17. 46 10
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractStoreProcess.java
  18. 1 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlDDLProcess.java
  19. 11 0
      jay-monitor-data-server/src/main/resources/application-com.yml
  20. 11 0
      jay-monitor-data-server/src/main/resources/application-dev.yml
  21. 11 0
      jay-monitor-data-server/src/main/resources/application-test.yml
  22. 11 0
      jay-monitor-data-server/src/main/resources/application-uat.yml
  23. 0 2
      jay-monitor-data-server/src/main/resources/application.yml
  24. 6 7
      jay-monitor-data-server/src/main/resources/logback.xml

+ 10 - 3
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/KafkaMonitorAutoConfiguration.java

@@ -1,11 +1,12 @@
 package com.jay.monitor.data.client.config;
 
+import com.jay.monitor.data.client.ext.MonitorRuleFactory;
 import com.jay.monitor.data.client.ext.kafka.KafkaMonitorProducer;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.support.ProducerListener;
+import org.springframework.kafka.listener.MessageListener;
 
 /**
  * @Module 配置类
@@ -14,12 +15,18 @@ import org.springframework.kafka.support.ProducerListener;
  * @Date 2020/11/19 14:17
  */
 @Configuration
+@ConditionalOnBean(value = {KafkaTemplate.class})
 public class KafkaMonitorAutoConfiguration {
 
     @Bean
-    @ConditionalOnClass(value = {KafkaTemplate.class, ProducerListener.class})
     public KafkaMonitorProducer kafkaMonitorProducer() {
         return new KafkaMonitorProducer();
     }
 
+    @Bean
+    @ConditionalOnBean(value = {MessageListener.class})
+    public MonitorRuleFactory monitorRuleFactory() {
+        return new MonitorRuleFactory();
+    }
+
 }

+ 43 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/MonitorRuleFactory.java

@@ -0,0 +1,43 @@
+package com.jay.monitor.data.client.ext;
+
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module 规则工厂
+ * @Description 规则工厂
+ * @Author liukaixiong
+ * @Date 2020/11/23 20:39
+ */
+@Component
+public class MonitorRuleFactory implements InitializingBean {
+
+    @Autowired(required = false)
+    private List<MqMonitorRuleCallback> monitorRuleCallbacks;
+
+    private Map<String, BiConsumer<String, MQDataDTO>> mqRuleMap = new HashMap<>();
+
+    public Map<String, BiConsumer<String, MQDataDTO>> getMqRuleMap() {
+        return mqRuleMap;
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        builderMqMap();
+    }
+
+    private void builderMqMap() {
+        if (monitorRuleCallbacks != null) {
+            for (MqMonitorRuleCallback monitorRuleCallback : monitorRuleCallbacks) {
+                mqRuleMap.putAll(monitorRuleCallback.getRuleMap());
+            }
+        }
+    }
+}

+ 1 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/consumer/KafkaMonitorConsumerListener.java

@@ -39,6 +39,7 @@ public class KafkaMonitorConsumerListener implements AcknowledgingMessageListene
     public void onMessage(ConsumerRecord<String, String> data, Acknowledgment acknowledgment) {
         try {
             listener.onMessage(data, acknowledgment);
+            // todo 不在一个事务消息内,无法获取准确的LOGI
             sendMonitorData(data, 1);
         } catch (Exception e) {
             sendMonitorData(data, -1);

+ 2 - 1
jay-monitor-data-client/src/main/resources/META-INF/spring.factories

@@ -1 +1,2 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jay.monitor.data.client.config.ClientMonitorAutoConfiguration
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jay.monitor.data.client.config.ClientMonitorAutoConfiguration\
+  ,com.jay.monitor.data.client.config.KafkaMonitorAutoConfiguration

文件差异内容过多而无法显示
+ 19 - 6
jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/MonitorSendProducerTest.java


+ 1 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/MonitorServerApplication.java

@@ -3,11 +3,10 @@ package com.jay.monitor.data.server;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.scheduling.annotation.EnableScheduling;
 
 @SpringBootApplication
 @MapperScan(basePackages = "com.jay.monitor.data.server.daos")
-@EnableScheduling
+//@EnableScheduling
 public class MonitorServerApplication {
 
     public static void main(String[] args) {

+ 6 - 11
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/MybatisConfig.java

@@ -4,11 +4,10 @@ import com.alibaba.druid.pool.DruidDataSource;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.sql.DataSource;
-
 @Configuration
 public class MybatisConfig {
 
@@ -17,15 +16,10 @@ public class MybatisConfig {
     private DataSourceProperties dataSourceProperties;
 
 
-    @Bean(name = "dataSource")
-    public DataSource dataSource() {
-        DruidDataSource dataSource = new DruidDataSource();
-        dataSource.setUrl(dataSourceProperties.getUrl());
-        System.out.println(dataSourceProperties.getUrl());
-        dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
-        dataSource.setUsername(dataSourceProperties.getUsername());
-        dataSource.setPassword(dataSourceProperties.getPassword());
-        return dataSource;
+    @ConfigurationProperties(prefix = "spring.datasource")
+    @Bean
+    public DruidDataSource druidDataSource() {
+        return new DruidDataSource();
     }
 
 //    @Bean
@@ -34,6 +28,7 @@ public class MybatisConfig {
 //        sqlSessionFactoryBean.setDataSource(dataSource());
 //        return sqlSessionFactoryBean.getObject();
 //    }
+
     /**
      * 分页插件
      */

+ 22 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/controllers/DebugController.java

@@ -1,5 +1,8 @@
 package com.jay.monitor.data.server.controllers;
 
+import com.alibaba.fastjson.JSON;
+import com.jay.monitor.data.server.enums.DataSplitType;
+import com.jay.monitor.data.server.factory.IdGenerateService;
 import com.jay.monitor.data.server.factory.generate.DayIdGenerate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -7,6 +10,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author : liukx
  * @describe :首页
@@ -18,10 +25,25 @@ public class DebugController {
     @Autowired
     private DayIdGenerate dayIdGenerate;
 
+    @Autowired
+    private List<IdGenerateService> idGenerateServiceList;
+
     @RequestMapping(value = "/restartTimeStrap", method = RequestMethod.GET)
     @ResponseBody
     public String index() throws Exception {
         dayIdGenerate.setM_timestamp(11110L);
         return "OK";
     }
+
+    @RequestMapping(value = "/getCurrentDayId", method = RequestMethod.GET)
+    @ResponseBody
+    public String getCurrentDayId() throws Exception {
+        Map<String, String> debugMap = new HashMap<>();
+        idGenerateServiceList.forEach((id) -> {
+            String current = id.getCurrent();
+            DataSplitType dataSplitType = id.splitType();
+            debugMap.put(dataSplitType.name(), current);
+        });
+        return JSON.toJSONString(debugMap);
+    }
 }

+ 39 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/ChangeConsumer.java

@@ -0,0 +1,39 @@
+package com.jay.monitor.data.server.factory;
+
+import java.util.Objects;
+import java.util.function.Consumer;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/24 10:35
+ */
+public interface ChangeConsumer<T> {
+    /**
+     * Performs this operation on the given argument.
+     *
+     * @param t the input argument
+     */
+    void accept(T t);
+
+    /**
+     * Returns a composed {@code Consumer} that performs, in sequence, this
+     * operation followed by the {@code after} operation. If performing either
+     * operation throws an exception, it is relayed to the caller of the
+     * composed operation.  If performing this operation throws an exception,
+     * the {@code after} operation will not be performed.
+     *
+     * @param after the operation to perform after this operation
+     * @return a composed {@code Consumer} that performs in sequence this
+     * operation followed by the {@code after} operation
+     * @throws NullPointerException if {@code after} is null
+     */
+    default Consumer<T> andThen(Consumer<? super T> after) {
+        Objects.requireNonNull(after);
+        return (T t) -> {
+            accept(t);
+            after.accept(t);
+        };
+    }
+}

+ 8 - 1
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/DataIdFactory.java

@@ -43,10 +43,13 @@ public class DataIdFactory implements InitializingBean {
             if (idGenerateService != null) {
                 return idGenerateService.getCurrentId((id) -> {
                     try {
-                        if (idChangeCallback != null) {
+                        if (this.idChangeCallback != null) {
                             logger.info("触发id变更修改,ID的类型:" + splitType);
                             idChangeCallback.onChange(splitType, id);
+                        } else {
+                            logger.warn("没有找到对应的数据拆分处理规则:" + splitType);
                         }
+                        logger.info("类型:" + splitType + "最后的编号:" + id);
                     } catch (Exception e) {
                         logger.error("数据生成失败", e);
                     }
@@ -56,6 +59,10 @@ public class DataIdFactory implements InitializingBean {
         return null;
     }
 
+    public List<IdGenerateService> getIdGenerateServices() {
+        return idGenerateServices;
+    }
+
     @Override
     public void afterPropertiesSet() throws Exception {
         if (idGenerateServices != null) {

+ 6 - 3
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/IdGenerateService.java

@@ -2,8 +2,6 @@ package com.jay.monitor.data.server.factory;
 
 import com.jay.monitor.data.server.enums.DataSplitType;
 
-import java.util.function.Consumer;
-
 /**
  * @Module 标识生成器
  * @Description 生成特定的标识
@@ -24,7 +22,12 @@ public interface IdGenerateService {
      *
      * @return
      */
-    public String getCurrentId(Consumer<String> consumer);
+    public String getCurrentId(ChangeConsumer<String> changeConsumer);
+
+    default String getCurrent() {
+        return getCurrentId((id) -> {
+        });
+    }
 
     /**
      * 获取指定id的下一个标识

+ 3 - 3
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/DayIdGenerate.java

@@ -1,6 +1,7 @@
 package com.jay.monitor.data.server.factory.generate;
 
 import com.jay.monitor.data.server.enums.DataSplitType;
+import com.jay.monitor.data.server.factory.ChangeConsumer;
 import com.jay.monitor.data.server.factory.IdGenerateService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -8,7 +9,6 @@ import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.function.Consumer;
 
 /**
  * @Module 编号生成器
@@ -22,7 +22,7 @@ public class DayIdGenerate implements IdGenerateService {
     /**
      * 防止在做天分割的时候,获取当前的时间戳不对。
      */
-    private final long delaySecond = 1800 * 1000L;
+    private final long delaySecond = 300 * 1000L;
 
     /**
      * 一天的秒
@@ -76,7 +76,7 @@ public class DayIdGenerate implements IdGenerateService {
     }
 
     @Override
-    public String getCurrentId(Consumer<String> consumer) {
+    public String getCurrentId(ChangeConsumer<String> consumer) {
         long timestamp = getDayTimestamp();
         String id = defaultId;
         if (timestamp != m_timestamp) {

+ 6 - 8
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/HourIdGenerate.java

@@ -1,12 +1,13 @@
 package com.jay.monitor.data.server.factory.generate;
 
 import com.jay.monitor.data.server.enums.DataSplitType;
+import com.jay.monitor.data.server.factory.ChangeConsumer;
 import com.jay.monitor.data.server.factory.IdGenerateService;
 import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.function.Consumer;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @Module 编号生成器
@@ -19,20 +20,17 @@ public class HourIdGenerate implements IdGenerateService {
 
     private SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHH");
 
-    public final long HOUR = 3600 * 1000L;
-
     private volatile long hourTimestamp = getHourTimestamp();
 
     private volatile String defaultId = resetCounter(hourTimestamp);
 
     protected long getHourTimestamp() {
-        long timestamp = System.currentTimeMillis();
-        return timestamp / HOUR;
+        return TimeUnit.MILLISECONDS.toHours(System.currentTimeMillis());
     }
 
     private String resetCounter(long timestamp) {
-        String id = sdf.format(new Date(System.currentTimeMillis()));
-        this.hourTimestamp = timestamp;
+        String id = sdf.format(new Date());
+        this.hourTimestamp = getHourTimestamp();
         this.defaultId = id;
         return id;
     }
@@ -43,7 +41,7 @@ public class HourIdGenerate implements IdGenerateService {
     }
 
     @Override
-    public String getCurrentId(Consumer<String> consumer) {
+    public String getCurrentId(ChangeConsumer<String> consumer) {
         long timestamp = getHourTimestamp();
         String id = defaultId;
         if (timestamp != hourTimestamp) {

+ 31 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/thread/DefaultThreadFactory.java

@@ -0,0 +1,31 @@
+package com.jay.monitor.data.server.factory.thread;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/27 14:57
+ */
+public class DefaultThreadFactory {
+    public static int print(int index) {
+        int result = index * 100;
+        System.out.println(index + "处理完消费:" + result);
+        return result;
+    }
+
+    public static void main(String[] args) {
+        CompletableFuture<Integer> list[] = new CompletableFuture[10];
+        for (int i = 0; i < 10; i++) {
+            int finalI = i;
+            CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
+                int print = DefaultThreadFactory.print(finalI);
+                return print;
+            });
+            list[i] = future;
+        }
+//        List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5, 6);
+//        numList.stream().parallel().reduce()
+    }
+}

+ 23 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/thread/TaskRunnable.java

@@ -0,0 +1,23 @@
+package com.jay.monitor.data.server.factory.thread;
+
+/**
+ * @Module 线程
+ * @Description 线程周期规则定义
+ * @Author liukaixiong
+ * @Date 2020/11/27 14:50
+ */
+public interface TaskRunnable extends Runnable {
+
+    /**
+     * 定义的线程名称
+     *
+     * @return
+     */
+    public String getThreadName();
+
+    /**
+     * 线程停止
+     */
+    public void stop();
+
+}

+ 4 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractSplitDataProcess.java

@@ -2,6 +2,8 @@ package com.jay.monitor.data.server.store;
 
 import com.jay.monitor.data.server.enums.DataSplitType;
 import com.jay.monitor.data.server.enums.StoreType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @Module 处理器
@@ -10,7 +12,7 @@ import com.jay.monitor.data.server.enums.StoreType;
  * @Date 2020/11/5 15:40
  */
 public abstract class AbstractSplitDataProcess {
-
+    private Logger logger = LoggerFactory.getLogger(getClass());
 
     public abstract void splitDataInvoke(DataSplitType splitData);
 
@@ -25,7 +27,7 @@ public abstract class AbstractSplitDataProcess {
         try {
             splitDataInvoke(splitData);
         } catch (Exception e) {
-
+            logger.error("AbstractSplitDataProcess.invoke : " + e.getMessage());
         }
     }
 

+ 46 - 10
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractStoreProcess.java

@@ -4,6 +4,7 @@ import com.jay.monitor.data.core.enums.MsgTypeEnums;
 import com.jay.monitor.data.server.config.props.MonitorProperties;
 import com.jay.monitor.data.server.enums.DataSplitType;
 import com.jay.monitor.data.server.enums.StoreType;
+import com.jay.monitor.data.server.factory.thread.TaskRunnable;
 import com.jay.monitor.data.server.store.mysql.MysqlDDLProcess;
 import com.jay.monitor.data.server.utils.MonitorPropertiesUtil;
 import org.slf4j.Logger;
@@ -16,6 +17,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.LongAdder;
 
 /**
@@ -24,7 +26,7 @@ import java.util.concurrent.atomic.LongAdder;
  * @Author liukaixiong
  * @Date 2020/10/29 13:33
  */
-public abstract class AbstractStoreProcess<T> implements Runnable, InitializingBean {
+public abstract class AbstractStoreProcess<T> implements TaskRunnable, InitializingBean {
     private Logger logger = LoggerFactory.getLogger(getClass());
 
     private LongAdder counter = new LongAdder();
@@ -33,6 +35,8 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
 
     private int batchSize = 500;
 
+    private volatile boolean isConsumer = true;
+
     private BlockingQueue<T> queue = new ArrayBlockingQueue<>(queueSize);
 
     @Autowired
@@ -73,14 +77,17 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
 
     public Object store(T request) throws Exception {
 
+        if (!this.isConsumer) {
+            logger.debug("当前消费标记:" + this.isConsumer + " 不处理消息!");
+            return null;
+        }
+
         storeBefore(request);
 
         boolean add = getQueue().offer(request);
 
         if (!add) {
-
             counter.decrement();
-
             if (counter.intValue() == 0 || counter.intValue() > queueSize) {
                 logger.warn(getClass() + " 队列消费满了,装不下去了");
                 counter.reset();
@@ -137,7 +144,8 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
         int batchSize = getBatchSize();
         int minBatch = batchSize / 10;
         int thresholdValue = (int) (defaultSize * 0.8);
-        while (true) {
+        long startHour = TimeUnit.MILLISECONDS.toHours(System.currentTimeMillis());
+        while (isConsumer) {
             try {
                 int size = this.queue.size();
                 if (size > 0) {
@@ -151,14 +159,27 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
                         // 如果数量不多的情况下
                         speedUpConsumer(this.queue, 1);
                     }
+                } else {
+                    long currentHour = TimeUnit.MILLISECONDS.toHours(System.currentTimeMillis());
+                    if (currentHour > startHour) {
+                        logger.warn(" current queue size : " + size + "\t hour : " + currentHour);
+                        startHour = currentHour;
+                    }
                 }
-            } catch (Exception e) {
-                logger.warn("异步队列消费失败", e);
+            } catch (Throwable e) {
+                logger.error("异步队列消费失败", e);
                 sleep(5);
             } finally {
                 sleep(5);
             }
         }
+        stop();
+        logger.warn(getThreadName() + " stop!!!!");
+    }
+
+    @Override
+    public void stop() {
+        this.isConsumer = false;
     }
 
     private void sleep(int ms) {
@@ -170,9 +191,20 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
     }
 
     public void startConsumerThread() {
-        String threadName = getClass().getSimpleName() + "-consumer-thread";
+        String threadName = getThreadName();
         logger.info("开启消费线程:" + threadName);
-        new Thread(this, threadName).start();
+        this.isConsumer = true;
+        Thread thread = new Thread(this, threadName);
+        thread.setUncaughtExceptionHandler((currentThread, throwable) -> {
+            logger.error("极端异常出现未捕获的情况:" + currentThread.getName(), throwable);
+        });
+        thread.start();
+    }
+
+    @Override
+    public String getThreadName() {
+        String threadName = getClass().getSimpleName() + "-consumer-thread";
+        return threadName;
     }
 
     @Override
@@ -192,12 +224,16 @@ public abstract class AbstractStoreProcess<T> implements Runnable, InitializingB
         if (tableRuleMap != null) {
             DataSplitType dataSplitType = tableRuleMap.get(tableName());
             if (dataSplitType != null) {
-                String dataId = ddlProcess.getDataId(tableName(), dataSplitType);
-                return dataId;
+                return ddlProcess.getDataId(tableName(), dataSplitType);
             }
         }
         return null;
     }
 
+    /**
+     * 处理的表名
+     *
+     * @return
+     */
     public abstract String tableName();
 }

+ 1 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlDDLProcess.java

@@ -40,6 +40,7 @@ public class MysqlDDLProcess extends AbstractSplitDataProcess {
         String currentId = dataIdFactory.getCurrentId(splitData);
 
         if (currentId == null) {
+            logger.warn("得不到当前编号 -> " + splitData);
             return;
         }
 

+ 11 - 0
jay-monitor-data-server/src/main/resources/application-com.yml

@@ -2,6 +2,17 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.jdbc.Driver
+    max-wait: 60000
+    time-between-eviction-runs-millis: 60000
+    initial-size: 20
+    min-idle: 10
+    max-active: 20
+    min-evictable-idle-time-millis: 600000
+#    max-evictable-idle-time-millis: 900000
+    test-on-borrow: false
+    test-on-return: false
+    test-while-idle: true
+    keep-alive: true
     url: jdbc:mysql://172.19.189.118/jay_monitor_prod?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
     username: jay_monitor
     password: jayzhou

+ 11 - 0
jay-monitor-data-server/src/main/resources/application-dev.yml

@@ -2,6 +2,17 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.jdbc.Driver
+    max-wait: 60000
+    time-between-eviction-runs-millis: 60000
+    initial-size: 10
+    min-idle: 10
+    max-active: 20
+    min-evictable-idle-time-millis: 600000
+#    max-evictable-idle-time-millis: 900000
+    test-on-borrow: false
+    test-on-return: false
+    test-while-idle: true
+    keep-alive: true
     url: jdbc:mysql://192.168.0.13:3306/elab_db?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior
     username: root
     password: elab@123

+ 11 - 0
jay-monitor-data-server/src/main/resources/application-test.yml

@@ -2,6 +2,17 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.jdbc.Driver
+    max-wait: 60000
+    time-between-eviction-runs-millis: 60000
+    initial-size: 10
+    min-idle: 10
+    max-active: 20
+    min-evictable-idle-time-millis: 600000
+#    max-evictable-idle-time-millis: 900000
+    test-on-borrow: false
+    test-on-return: false
+    test-while-idle: true
+    keep-alive: true
     url: jdbc:mysql://172.19.189.118/jay_monitor?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
     username: jay_monitor
     password: jayzhou

+ 11 - 0
jay-monitor-data-server/src/main/resources/application-uat.yml

@@ -2,6 +2,17 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.jdbc.Driver
+    max-wait: 60000
+    time-between-eviction-runs-millis: 60000
+    initial-size: 10
+    min-idle: 10
+    max-active: 20
+    min-evictable-idle-time-millis: 600000
+#    max-evictable-idle-time-millis: 900000
+    test-on-borrow: false
+    test-on-return: false
+    test-while-idle: true
+    keep-alive: true
     url: jdbc:mysql://172.19.189.118/jay_monitor?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
     username: jay_monitor
     password: jayzhou

+ 0 - 2
jay-monitor-data-server/src/main/resources/application.yml

@@ -41,8 +41,6 @@ mybatis-plus:
   type-aliases-package: com.jay.monitor.data.server.daos
   config-location: classpath:/mybatis/mybatis-config.xml
 
-
-
 swagger2:
   basePackage: com.jay.monitor.data.server.controllers
   title: backstage

+ 6 - 7
jay-monitor-data-server/src/main/resources/logback.xml

@@ -3,13 +3,13 @@
     <include resource="org/springframework/boot/logging/logback/base.xml"/>
     <jmxConfigurator/>
     <property name="LOG_PATH" value="logs"/>
-    <property name="APPLICATION" value="jay-monitor-data-server" />
+    <property name="APPLICATION" value="jay-monitor-data-server"/>
 
 
     <appender name="info-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <File>${LOG_PATH}/${APPLICATION}.log</File>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/%d{yyyyMMdd}/%d{yyyyMMdd}-%i.log</fileNamePattern>
+            <fileNamePattern>${LOG_PATH}/%d{yyyyMMdd}/${APPLICATION}-%d{yyyyMMdd}-%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
             <totalSizeCap>30GB</totalSizeCap>
             <maxFileSize>100MB</maxFileSize>
@@ -32,9 +32,7 @@
             <level>ERROR</level>
         </filter>
         <encoder>
-            <pattern>
-                %msg%n
-            </pattern>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
         </encoder>
         <!-- 滚动策略 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
@@ -68,12 +66,13 @@
             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
         </encoder>
     </appender>
-    <logger name="com.jay.monitor.data.server" level="INFO"  additivity="false">
+
+    <logger name="com.jay.monitor.data.server" level="INFO" additivity="false">
         <appender-ref ref="stdout"/>
     </logger>
 
     <root level="INFO">
-<!--        <appender-ref ref="console"></appender-ref>-->
+        <!--        <appender-ref ref="console"></appender-ref>-->
         <appender-ref ref="ASYNC_FILE"></appender-ref>
         <appender-ref ref="ERROR_LOG"></appender-ref>
     </root>