Sfoglia il codice sorgente

!155 merge
Merge pull request !155 from AE86/design_consumer

AE86 1 anno fa
parent
commit
697dc4113b

+ 13 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MonitorServiceImpl.java

@@ -15,6 +15,7 @@ import org.dbsyncer.biz.vo.DataVo;
 import org.dbsyncer.biz.vo.LogVo;
 import org.dbsyncer.biz.vo.MetaVo;
 import org.dbsyncer.biz.vo.MetricResponseVo;
+import org.dbsyncer.common.event.PreloadCompletedEvent;
 import org.dbsyncer.common.model.Paging;
 import org.dbsyncer.common.scheduled.ScheduledTaskJob;
 import org.dbsyncer.common.scheduled.ScheduledTaskService;
@@ -43,6 +44,7 @@ import org.dbsyncer.storage.query.filter.LongFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
@@ -63,7 +65,7 @@ import java.util.stream.Collectors;
  * @date 2020/04/27 10:20
  */
 @Service
-public class MonitorServiceImpl extends BaseServiceImpl implements MonitorService, ScheduledTaskJob {
+public class MonitorServiceImpl extends BaseServiceImpl implements MonitorService, ScheduledTaskJob, ApplicationListener<PreloadCompletedEvent> {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -82,6 +84,8 @@ public class MonitorServiceImpl extends BaseServiceImpl implements MonitorServic
     @Resource
     private SystemConfigService systemConfigService;
 
+    private boolean preloadCompleted;
+
     private Map<String, MetricDetailFormatter> metricDetailFormatterMap = new LinkedHashMap<>();
 
     @PostConstruct
@@ -186,8 +190,10 @@ public class MonitorServiceImpl extends BaseServiceImpl implements MonitorServic
 
     @Override
     public void deleteExpiredDataAndLog() {
-        deleteExpiredData();
-        deleteExpiredLog();
+        if (preloadCompleted) {
+            deleteExpiredData();
+            deleteExpiredLog();
+        }
     }
 
     @Override
@@ -308,4 +314,8 @@ public class MonitorServiceImpl extends BaseServiceImpl implements MonitorServic
         }).collect(Collectors.toList());
     }
 
+    @Override
+    public void onApplicationEvent(PreloadCompletedEvent event) {
+        preloadCompleted = true;
+    }
 }

+ 24 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/event/PreloadCompletedEvent.java

@@ -0,0 +1,24 @@
+package org.dbsyncer.common.event;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.event.ApplicationContextEvent;
+
+/**
+ * 预加载完成事件
+ *
+ * @version 1.0.0
+ * @Author AE86
+ * @Date 2020-08-26 22:45
+ */
+public final class PreloadCompletedEvent extends ApplicationContextEvent {
+
+    /**
+     * Create a new ContextStartedEvent.
+     *
+     * @param source the {@code ApplicationContext} that the event is raised for (must not be {@code null})
+     */
+    public PreloadCompletedEvent(ApplicationContext source) {
+        super(source);
+    }
+
+}

+ 13 - 5
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreloadTemplate.java

@@ -1,5 +1,6 @@
 package org.dbsyncer.manager.template;
 
+import org.dbsyncer.common.event.PreloadCompletedEvent;
 import org.dbsyncer.common.model.Paging;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
@@ -20,11 +21,12 @@ import org.dbsyncer.storage.enums.StorageEnum;
 import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -41,18 +43,21 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Autowired
+    @Resource
     private Parser parser;
 
-    @Autowired
+    @Resource
     private Manager manager;
 
-    @Autowired
+    @Resource
     private StorageService storageService;
 
-    @Autowired
+    @Resource
     private OperationTemplate operationTemplate;
 
+    @Resource
+    private ApplicationContext applicationContext;
+
     public void execute(CommandEnum commandEnum) {
         Query query = new Query();
         query.setType(StorageEnum.CONFIG);
@@ -162,6 +167,9 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
 
         // Launch drivers
         launch();
+
+        // publish event
+        applicationContext.publishEvent(new PreloadCompletedEvent(applicationContext));
     }
 
 }