Kaynağa Gözat

feat:添加清理历史统计数据定时任务

zhangyi 1 yıl önce
ebeveyn
işleme
4c7b947024

+ 4 - 0
src/main/java/cn/seecoder/paas/data/dao/MetricsDAO.java

@@ -5,6 +5,7 @@ import cn.seecoder.paas.util.enums.MetricsSource;
 import cn.seecoder.paas.util.enums.MetricsType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -13,4 +14,7 @@ import java.util.List;
 public interface MetricsDAO extends JpaRepository<Metrics, Integer> {
 
     List<Metrics> findByMetricsSourceAndAndMetricsSourceValueAndMetricsTypeAndMetricsTimeBetween(MetricsSource source, String metricsSourceValue, MetricsType metricsType, LocalDateTime startTime, LocalDateTime endTime);
+
+    @Transactional
+    void deleteByMetricsTimeBefore(LocalDateTime twoDaysAgo);
 }

+ 7 - 0
src/main/java/cn/seecoder/paas/service/scheduler/MetricsScheduler.java

@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -111,4 +112,10 @@ public class MetricsScheduler {
             }
         });
     }
+
+    @Scheduled(cron = "0 0 4 * * ?") // 每天凌晨4点执行
+    public void cleanupOldMetrics() {
+        LocalDateTime twoDaysAgo = LocalDateTime.now().minusDays(2);
+        metricsDAO.deleteByMetricsTimeBefore(twoDaysAgo);
+    }
 }