dsjang 2024-08-01
결과 데이터 로그 테이블로 이동 기능 추가
@2477085a37539fd19709cd5d6ac4ee634bb95f3f
src/main/java/com/munjaon/client/config/RunnerConfiguration.java
--- src/main/java/com/munjaon/client/config/RunnerConfiguration.java
+++ src/main/java/com/munjaon/client/config/RunnerConfiguration.java
@@ -1,6 +1,7 @@
 package com.munjaon.client.config;
 
 import com.munjaon.client.server.service.CollectClientService;
+import com.munjaon.client.server.service.DataMoveService;
 import com.munjaon.client.server.service.PropertyLoader;
 import com.munjaon.client.server.service.ReportClientService;
 import lombok.RequiredArgsConstructor;
@@ -119,4 +120,17 @@
         }
         return args -> System.out.println("Runner Bean #2");
     }
+
+    @Bean
+    @Order(3)
+    public CommandLineRunner getRunnerBeanForMove() {
+        try {
+            String serviceName = "LOG_MOVE";
+            DataMoveService dataMoveService = new DataMoveService(serviceName);
+            dataMoveService.start();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return args -> System.out.println("Runner Bean #2");
+    }
 }
src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
--- src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
+++ src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
@@ -5,6 +5,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -49,4 +50,17 @@
     public int deleteFromDeliver(String msgId) {
         return mariaDBMapper.deleteFromDeliver(msgId);
     }
+
+    @Transactional
+    public void moveToDeliver() {
+        List<MunjaonMsg> list = selectToMove();
+        if (list == null || list.size() == 0) {
+            return;
+        }
+        log.debug("[CLASS : {} : MOVE_COUNT : {}", this.getClass(), list.size());
+        for (MunjaonMsg msg : list) {
+            insertToLog(msg.getMsgId());
+            deleteFromDeliver(msg.getMsgId());
+        }
+    }
 }
 
src/main/java/com/munjaon/client/server/service/DataMoveService.java (added)
+++ src/main/java/com/munjaon/client/server/service/DataMoveService.java
@@ -0,0 +1,62 @@
+package com.munjaon.client.server.service;
+
+import com.munjaon.client.service.DatabaseTypeWorker;
+import org.json.simple.JSONObject;
+
+public class DataMoveService extends Service {
+    private DatabaseTypeWorker worker;
+
+    public DataMoveService(String serviceName) {
+        super(serviceName);
+    }
+
+    @Override
+    public void checkReady() {
+        worker = DatabaseTypeWorker.find(System.getProperty("DBMS"));
+        if (worker == null) {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]");
+            return;
+        }
+
+        saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
+        this.IS_READY_YN = worker.checkTableExists();
+    }
+
+    @Override
+    public void initResources() {
+
+    }
+
+    @Override
+    public void releaseResources() {
+
+    }
+
+    @Override
+    public void doService() {
+        while (isRun()) {
+            try {
+                messageService();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private void messageService() {
+        try {
+            while (isRun()) {
+                worker.moveToDeliver();
+                Thread.sleep(3000L);
+            }
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+    @Override
+    public JSONObject monitorService() {
+        return null;
+    }
+}
src/main/java/com/munjaon/client/server/service/ReportClientService.java
--- src/main/java/com/munjaon/client/server/service/ReportClientService.java
+++ src/main/java/com/munjaon/client/server/service/ReportClientService.java
@@ -120,7 +120,7 @@
     private void messageService() {
 
         try {
-            while (true) {
+            while (isRun()) {
                 headBuffer.clear();
                 int recvCount = socketChannel.read(headBuffer);
 //                saveSystemLog("recvCount : " + recvCount);
src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
--- src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
+++ src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
@@ -57,6 +57,12 @@
             MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService();
             return mariaDBService.deleteFromDeliver(msgId);
         }
+
+        @Override
+        public void moveToDeliver() {
+            MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService();
+            mariaDBService.moveToDeliver();
+        }
     },
     TYPE_OF_MYSQL("MYSQL") {
         @Override
@@ -98,6 +104,11 @@
         public int deleteFromDeliver(String msgId) {
             return 0;
         }
+
+        @Override
+        public void moveToDeliver() {
+
+        }
     };
 
     DatabaseTypeWorker(final String name) {
@@ -122,4 +133,5 @@
     public abstract List<MunjaonMsg> selectToExpire(String expireTime);
     public abstract int insertToLog(String msgId);
     public abstract int deleteFromDeliver(String msgId);
+    public abstract void moveToDeliver();
 }
Add a comment
List