Browse Source

增加监控逻辑

xufei 4 years ago
parent
commit
2532561b1d

+ 1 - 1
pom.xml

@@ -101,7 +101,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
-            <version>1.0.18</version>
+            <version>1.1.10</version>
         </dependency>
 
         <!--SpringBoot 使用 JDBCTemplate 引用下面这个包才会自动注入,不要引用上面按个-->

+ 46 - 11
src/main/java/com/winhc/task/PersonMergeIncremnetTask.java

@@ -58,20 +58,19 @@ public class PersonMergeIncremnetTask {
     DingUtils dingUtils;
 
     //TODO 启动合并任务
-    @Scheduled(cron = "00 30 05 * * ?")
+    @Scheduled(cron = "00 00 04 * * ?")
     //@Scheduled(cron = "*/20 * * * * ?")
-    //@Scheduled(cron = "40 06 17 * * ?")
+    //@Scheduled(cron = "50 36 19 * * ?")
     public void mergePersonScheduled() throws UnsupportedEncodingException {
-        log.info("start  MergePersonScheduled !!!");
-        if (!CompanyUtils.isWindows()) {
-            dingUtils.send("MergePersonScheduled start !!!");
-        }
+
         long start = System.currentTimeMillis();
         try {
             MergeParam param = initParams();
-            mergeAndExport(param);
-            sendKafka(param);
-            startJob(param);
+            if(querySussessStatus(param)){
+                mergeAndExport(param);
+                sendKafka(param);
+                startJob(param);
+            }
         } catch (Exception e) {
             log.error("MergePersonScheduled error | message:{} | .", e.getMessage());
             if (!CompanyUtils.isWindows()) {
@@ -84,11 +83,47 @@ public class PersonMergeIncremnetTask {
         log.info("MergePersonScheduled end | cost:{} | !", (System.currentTimeMillis() - start));
     }
 
+    private boolean querySussessStatus(MergeParam param) throws UnsupportedEncodingException, InterruptedException {
+        boolean flag = false;
+        ArrayList<Integer> hours = new ArrayList<>();
+        while (true) {
+            List<Map<String, Object>> list = jdbcTemplate.queryForList("select id,status,topic_type,create_time from node_relation_success_status where  status = '1' and id = " + param.getLastPartition());
+            if (list.size() > 0) {
+                log.info("start  MergePersonScheduled !!!");
+                if (!CompanyUtils.isWindows()) {
+                    dingUtils.send("MergePersonScheduled start !!!");
+                }
+                flag = true;
+                break;
+            }
+            Thread.sleep(60*1000);
+            log.info("waiting  success status !!!");
+            int hour = DateUtil.getCurrentHours();
+            if( hour >= 8 && !hours.contains(hour)){
+                hours.add(hour);
+                log.info("上游阻塞告警 !!!!!!");
+                if (!CompanyUtils.isWindows()) {
+                    dingUtils.send("上游阻塞告警 !!!!!!");
+                }
+            }
+
+            //超时退出
+            if(DateUtil.getCurrentHours() >= 22){
+                log.info("超时程序主动退出 !!!!!!");
+                if (!CompanyUtils.isWindows()) {
+                    dingUtils.send("超时程序主动退出 !!!!!!");
+                }
+                break;
+            }
+        }
+        return flag;
+    }
+
     private void sendKafka(MergeParam param) throws InterruptedException, ExecutionException, TimeoutException {
         //移除人员发送kafka
         loadCSVSendKafka(param.getPathPre(), param.getDeletedPath(), param.getTopic(), "1");
         //保证先移除,再更新
-        Thread.sleep(10*1000);
+        Thread.sleep(10 * 1000);
         //增量人员发送kafka
         loadCSVSendKafka(param.getPathPre(), param.getIncrPath(), param.getTopic(), "0");
         //合并人员发送kafka
@@ -175,7 +210,7 @@ public class PersonMergeIncremnetTask {
             }
 
             if (count != 0) {
-                Thread.sleep(2*60*1000);
+                Thread.sleep(2 * 60 * 1000);
             } else {
                 log.info("startJob end | cost:{} | !", (System.currentTimeMillis() - start));
                 return;

+ 64 - 54
src/main/java/com/winhc/utils/DateUtil.java

@@ -7,43 +7,61 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.GregorianCalendar;
 
 /**
  * 日期工具类
- * 
  */
 public class DateUtil {
 
-    /** yyyy-MM-dd */
+    /**
+     * yyyy-MM-dd
+     */
     public static final String FORMAT_YYYY_MM_DD = "yyyy-MM-dd";
 
-    /** yyyyMMdd */
+    /**
+     * yyyyMMdd
+     */
     public static final String FORMAT_YYYYMMDD = "yyyyMMdd";
 
-    /** yyyyMM */
+    /**
+     * yyyyMM
+     */
     public static final String FORMAT_YYYYMM = "yyyyMM";
 
-    /** yyMMdd */
+    /**
+     * yyMMdd
+     */
     public static final String FORMAT_YYMMDD = "yyMMdd";
 
-    /** yyyy-MM-dd HH:mm:ss */
+    /**
+     * yyyy-MM-dd HH:mm:ss
+     */
     public static final String FORMAT_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
-    /** yyyy-MM-dd HH:mm */
+    /**
+     * yyyy-MM-dd HH:mm
+     */
     public static final String FORMAT_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
 
-    /** yyyyMMddHHmmss */
+    /**
+     * yyyyMMddHHmmss
+     */
     public static final String FORMAT_YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
 
-    /** HH:mm:ss */
+    /**
+     * HH:mm:ss
+     */
     public static final String FORMAT_HH_MM_SS = "HH:mm:ss";
 
-    /** HHmmss */
+    /**
+     * HHmmss
+     */
     public static final String FORMAT_HHMMSS = "HHmmss";
 
     /**
      * 转换为2017年01月26日
-     * 
+     *
      * @param dateString 20170126
      * @return
      */
@@ -57,7 +75,7 @@ public class DateUtil {
 
     /**
      * 2017-12-08
-     * 
+     *
      * @param dateString
      * @return
      */
@@ -71,7 +89,7 @@ public class DateUtil {
 
     /**
      * 11:04:23
-     * 
+     *
      * @param dateString
      * @return
      */
@@ -85,9 +103,9 @@ public class DateUtil {
 
     /**
      * 字符串 转 日期
-     * 
+     *
      * @param dateString 日期字符串
-     * @param pattern 格式化样式
+     * @param pattern    格式化样式
      * @return 日期对象
      */
     public static final Date parseDate(String dateString, String pattern) {
@@ -106,8 +124,8 @@ public class DateUtil {
 
     /**
      * 日期对象格式化
-     * 
-     * @param date 日期对象
+     *
+     * @param date    日期对象
      * @param pattern 格式化样式
      * @return 字符串日期
      */
@@ -181,8 +199,8 @@ public class DateUtil {
      * <p>
      * 例如:convertDate("2012-01-02", "yyyy-MM-dd", "yyyy/mm/dd")返回2012/01/02
      * </p>
-     * 
-     * @param source 待处理的日期字符串
+     *
+     * @param source  待处理的日期字符串
      * @param sformat 原来的格式
      * @param dformat 新的格式
      * @return 转换后的日期字符串
@@ -199,7 +217,7 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyyMM
-     * 
+     *
      * @return 当前日期字符串(yyyyMM)
      */
 
@@ -209,7 +227,7 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyyMMdd
-     * 
+     *
      * @return 当前日期字符串(yyyyMMdd)
      */
     public static String getCurrDate_YYYYMM() {
@@ -218,7 +236,7 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 HHmmss
-     * 
+     *
      * @return 当前日期字符串(HHmmss)
      */
     public static String getCurrDate_HHMMSS() {
@@ -227,8 +245,8 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyy-MM-dd
-     * 
-     * @return 当前日期字符串(yyyy-MM-dd)
+     *
+     * @return 当前日期字符串(yyyy - MM - dd)
      */
     public static String getCurrDate_YYYY_MM_DD() {
         return formatDate(new Date(), FORMAT_YYYY_MM_DD);
@@ -236,8 +254,8 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyy-MM-dd HH:mm:ss
-     * 
-     * @return 当前日期字符串(yyyy-MM-dd HH:mm:ss)
+     *
+     * @return 当前日期字符串(yyyy - MM - dd HH : mm : ss)
      */
     public static String getCurrDate_YYYY_MM_DD_HH_MM_SS() {
         return formatDate(new Date(), FORMAT_YYYY_MM_DD_HH_MM_SS);
@@ -245,8 +263,8 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyy-MM-dd HH:mm
-     * 
-     * @return 当前日期字符串(yyyy-MM-dd HH:mm)
+     *
+     * @return 当前日期字符串(yyyy - MM - dd HH : mm)
      */
     public static String getCurrDate_YYYY_MM_DD_HH_MM() {
         return formatDate(new Date(), FORMAT_YYYY_MM_DD_HH_MM);
@@ -254,7 +272,7 @@ public class DateUtil {
 
     /**
      * 获得当前日期字符串,格式为 yyyyMMddHHmmss
-     * 
+     *
      * @return 当前日期字符串(yyyyMMddHHmmss)
      */
     public static String getCurrTime_YYYYMMDDHHMMSS() {
@@ -263,8 +281,7 @@ public class DateUtil {
 
     /**
      * 判断是否是日期
-     * 
-     * @return dateString 日期字符串
+     *
      * @param pattern 格式化样式(yyyyMMddHHmmss)
      * @return 是日期返回true, 否则返回false
      */
@@ -286,8 +303,7 @@ public class DateUtil {
 
     /**
      * 判断是否是日期
-     * 
-     * @return dateString 日期字符串
+     *
      * @param pattern 格式化样式(yyyyMMddHHmmss)
      * @return 不是日期返回true, 否则返回false
      */
@@ -297,8 +313,7 @@ public class DateUtil {
 
     /**
      * 获取上个月的月份
-     * 
-     * @return dateString 日期字符串
+     *
      * @return 不是日期返回true, 否则返回false
      */
     public static String getLastMonth() {
@@ -310,8 +325,7 @@ public class DateUtil {
 
     /**
      * 获取上个月的年月份
-     * 
-     * @return dateString 日期字符串
+     *
      * @return 不是日期返回true, 否则返回false
      */
     public static String getLastYearMonth() {
@@ -323,8 +337,7 @@ public class DateUtil {
 
     /**
      * 获取上个月的年
-     * 
-     * @return dateString 日期字符串
+     *
      * @return 不是日期返回true, 否则返回false
      */
     public static String getYearByLastMonth() {
@@ -348,7 +361,7 @@ public class DateUtil {
 
     /**
      * 计算日期
-     * 
+     *
      * @param date
      * @param yearNum
      * @param monthNum
@@ -371,7 +384,6 @@ public class DateUtil {
         return result;
     }
 
-    
 
     public static Date getOnlyDate(Date date) {
         Calendar calendar = Calendar.getInstance();
@@ -384,11 +396,9 @@ public class DateUtil {
     }
 
 
-  
-  
     /**
      * 计算时间差值,单位为天 去除时间后的计算结果+1,例如20180410
-     * 
+     *
      * @return
      * @throws Exception
      */
@@ -413,7 +423,7 @@ public class DateUtil {
 
     /**
      * 获取该日期几天后的日期
-     * 
+     *
      * @return
      */
     public static Date getDateAfter(Date date, int dayNum) {
@@ -425,9 +435,8 @@ public class DateUtil {
     }
 
     /**
-     * 
      * 描述:获取一月后的日期.
-     * 
+     *
      * @return yyyyMMdd
      */
     public static String getDateAfterOneMonth() {
@@ -437,9 +446,8 @@ public class DateUtil {
     }
 
     /**
-     * 
      * 获取一周后的日期
-     * 
+     *
      * @return yyyyMMdd
      */
     public static String getDateAfterOneWeek() {
@@ -450,9 +458,8 @@ public class DateUtil {
     }
 
     /**
-     * 
      * 获取dayNum天后的日期
-     * 
+     *
      * @return yyyyMMdd
      */
     public static String getDateAfterDayNum(Integer dayNum) {
@@ -463,7 +470,6 @@ public class DateUtil {
     }
 
     /**
-     *
      * 获取day前数据
      *
      * @return yyyyMMdd
@@ -477,7 +483,7 @@ public class DateUtil {
 
     /**
      * 获取N分钟以后的日期,格式: yyyyMMddHHmmsss
-     * 
+     *
      * @param minuts
      * @return
      */
@@ -492,8 +498,12 @@ public class DateUtil {
 
     }
 
+    public static int getCurrentHours() {
+        return new GregorianCalendar().get(Calendar.HOUR_OF_DAY);
+    }
+
     public static void main(String[] args) throws Exception {
-        System.out.println(formatDate_YYYYMMDD(new Date()));
+        System.out.println(getCurrentHours());
     }
 
 }

+ 4 - 3
src/main/resources/application-prd.properties

@@ -14,9 +14,10 @@ spring.data.neo4j.uri=bolt://192.168.2.57:7687
 #spring.datasource.url = jdbc:mysql://rm-uf61r3m23ba1p5z3dfo.mysql.rds.aliyuncs.com:3306/prism1?useUnicode=true&characterEncoding=utf-8
 
 #内网地址
-#spring.datasource.url = jdbc:mysql://rm-uf61r3m23ba1p5z3d.mysql.rds.aliyuncs.com:3306/prism1?useUnicode=true&characterEncoding=utf-8
-#spring.datasource.username = wenshu
-#spring.datasource.password = wenshu_168
+spring.datasource.url = jdbc:mysql://rm-uf61r3m23ba1p5z3d.mysql.rds.aliyuncs.com:3306/prism1?useUnicode=true&characterEncoding=utf-8
+spring.datasource.username = wenshu
+spring.datasource.password = wenshu_168
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 
 scheduling.enabled = true
 

+ 1 - 0
src/main/resources/application.properties

@@ -26,6 +26,7 @@ spring.messages.encoding=UTF-8
 spring.datasource.url = jdbc:mysql://rm-uf61r3m23ba1p5z3dfo.mysql.rds.aliyuncs.com:3306/prism1?useUnicode=true&characterEncoding=utf-8
 spring.datasource.username = wenshu
 spring.datasource.password = wenshu_168
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 
 
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource