diff --git a/src/main/java/com/munjaon/client/config/RunnerConfiguration.java b/src/main/java/com/munjaon/client/config/RunnerConfiguration.java index ea9e405..838cbc9 100644 --- a/src/main/java/com/munjaon/client/config/RunnerConfiguration.java +++ b/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 @@ public class RunnerConfiguration { } 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"); + } } diff --git a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java index 0019390..65efae6 100644 --- a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java +++ b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java @@ -5,6 +5,7 @@ import com.munjaon.client.model.MunjaonMsg; 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 class MariaDBService { public int deleteFromDeliver(String msgId) { return mariaDBMapper.deleteFromDeliver(msgId); } + + @Transactional + public void moveToDeliver() { + List 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()); + } + } } diff --git a/src/main/java/com/munjaon/client/server/service/DataMoveService.java b/src/main/java/com/munjaon/client/server/service/DataMoveService.java new file mode 100644 index 0000000..43c8ec5 --- /dev/null +++ b/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; + } +} diff --git a/src/main/java/com/munjaon/client/server/service/ReportClientService.java b/src/main/java/com/munjaon/client/server/service/ReportClientService.java index 057b3a4..9ba52d1 100644 --- a/src/main/java/com/munjaon/client/server/service/ReportClientService.java +++ b/src/main/java/com/munjaon/client/server/service/ReportClientService.java @@ -120,7 +120,7 @@ public class ReportClientService extends Service { private void messageService() { try { - while (true) { + while (isRun()) { headBuffer.clear(); int recvCount = socketChannel.read(headBuffer); // saveSystemLog("recvCount : " + recvCount); diff --git a/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java b/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java index b318b8c..8d4488b 100644 --- a/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java +++ b/src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java @@ -57,6 +57,12 @@ public enum DatabaseTypeWorker { 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 enum DatabaseTypeWorker { public int deleteFromDeliver(String msgId) { return 0; } + + @Override + public void moveToDeliver() { + + } }; DatabaseTypeWorker(final String name) { @@ -122,4 +133,5 @@ public enum DatabaseTypeWorker { public abstract List selectToExpire(String expireTime); public abstract int insertToLog(String msgId); public abstract int deleteFromDeliver(String msgId); + public abstract void moveToDeliver(); }