Browse Source

data process update

shjung 2 years ago
parent
commit
6e8949a332

+ 1 - 0
conf/vds-comm-server.pid

@@ -0,0 +1 @@
+15568

+ 3 - 3
src/main/java/com/its/vds/VdsCommServerApplication.java

@@ -3,7 +3,7 @@ package com.its.vds;
 import com.its.app.AppUtils;
 import com.its.app.utils.SysUtils;
 import com.its.vds.config.ProcessConfig;
-import com.its.vds.process.DbmsJobProcess;
+import com.its.vds.process.DbmsDataProcess;
 import com.its.vds.service.UnitSystService;
 import com.its.vds.service.VdsCtlrService;
 import com.its.vds.ui.JTextAreaOutputStream;
@@ -95,8 +95,8 @@ public class VdsCommServerApplication implements CommandLineRunner, ApplicationL
         log.info("************************************************************************************");
 
         // init application
-        DbmsJobProcess dbmsJobProcess = (DbmsJobProcess)AppUtils.getBean(DbmsJobProcess.class);
-        dbmsJobProcess.run();
+        DbmsDataProcess dbmsDataProcess = (DbmsDataProcess)AppUtils.getBean(DbmsDataProcess.class);
+        dbmsDataProcess.run();
 
         VdsDataProcess tcpServerDataProcess = (VdsDataProcess)AppUtils.getBean(VdsDataProcess.class);
         tcpServerDataProcess.run();

+ 4 - 4
src/main/java/com/its/vds/config/ThreadPoolInitializer.java

@@ -71,16 +71,16 @@ public class ThreadPoolInitializer extends AsyncConfigurerSupport {
         return threadPoolTaskExecutor;
     }
 
-    @Bean(name="dbmsJobExecutor")
-    public Executor getDbmsJobExecutor() {
+    @Bean(name="dbmsDataExecutor")
+    public Executor getDbmsDataExecutor() {
         ThreadPoolTaskExecutor threadPoolTaskExecutor = getDefaultExecutor(this.dbms);
         threadPoolTaskExecutor.setThreadNamePrefix("dbms-pool-");
         threadPoolTaskExecutor.initialize();
         return threadPoolTaskExecutor;
     }
 
-    @Bean(name="appJobExecutor")
-    public Executor getAppJobExecutor() {
+    @Bean(name="workDataExecutor")
+    public Executor getWorkDataExecutor() {
         ThreadPoolTaskExecutor threadPoolTaskExecutor = getDefaultExecutor(this.work);
         threadPoolTaskExecutor.setThreadNamePrefix("work-pool-");
         threadPoolTaskExecutor.initialize();

+ 0 - 112
src/main/java/com/its/vds/process/AbstractDbmsJobProcess.java

@@ -1,112 +0,0 @@
-package com.its.vds.process;
-
-import com.its.app.AppUtils;
-import com.its.vds.config.ThreadPoolInitializer;
-import com.its.vds.dao.mapper.UnitSystMapper;
-import com.its.vds.entity.TbUnitSystStts;
-import lombok.extern.slf4j.Slf4j;
-
-import javax.annotation.PostConstruct;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-
-@Slf4j
-public abstract class AbstractDbmsJobProcess {
-
-    public static LinkedBlockingQueue<DbmsJobData> DBMS_DATA_QUEUE = new LinkedBlockingQueue<>(1000);
-    private UnitSystMapper unitSystMapper;
-    private final ThreadPoolExecutor taskExecutor = (ThreadPoolExecutor)Executors.newFixedThreadPool(1);
-    int MAX_CORE = Runtime.getRuntime().availableProcessors();
-
-    @PostConstruct
-    void init() {
-        this.unitSystMapper = (UnitSystMapper) AppUtils.getBean(UnitSystMapper.class);
-        postConstruct();
-    }
-
-    protected abstract void postConstruct();
-    public abstract void process(DbmsJobData data);
-
-    public void run() {
-        log.info("AbstractDbmsJobProcess.run: Start.");
-        if (this.MAX_CORE < 8) {
-            this.MAX_CORE = 8;
-        }
-        ThreadPoolInitializer poolInitializer = (ThreadPoolInitializer) AppUtils.getBean(ThreadPoolInitializer.class);
-        int executePool = Math.max(this.MAX_CORE, poolInitializer.getWork());
-        for (int ii = 0; ii < executePool; ii++) {
-            log.info("AbstractDbmsJobProcess.Task: {}", ii);
-            this.taskExecutor.execute(() -> {
-                while (true) {
-                    try {
-                        DbmsJobData dbmsJobData = AbstractDbmsJobProcess.DBMS_DATA_QUEUE.take();
-                        if (dbmsJobData != null) {
-                            log.info("DBMS_DATA_QUEUE..take: {} EA, {}, {}", DBMS_DATA_QUEUE.size(), dbmsJobData, Thread.currentThread().getName());
-                            DbmsJobTask handler = (DbmsJobTask) AppUtils.getBean(DbmsJobTask.class);
-                            handler.run(this, dbmsJobData);
-                        }
-                        else {
-                            log.error("AbstractDbmsJobProcess.Task: Received data null");
-                        }
-                    }
-                    catch (Exception e) {
-                        log.error("AbstractDbmsJobProcess.Task: Exception: {}", e.getMessage(), e);
-                    }
-                }
-            });
-        }
-
-        log.info("AbstractDbmsJobProcess.run: ..End.");
-    }
-
-    /*
-     *  작업큐에 데이터 추가
-     */
-    public boolean add(DbmsJobData dbmsJobData) {
-        boolean offer = false;
-        try {
-            //offer => full -> return
-            //add   => full -> wait
-            //큐가 차더라도 바로 리턴함.
-            offer = AbstractDbmsJobProcess.DBMS_DATA_QUEUE.offer(dbmsJobData);
-            if (!offer) {
-                log.error("DbmsJobProcess.add: Queue Full Error, Size: {} EA", DBMS_DATA_QUEUE.size());
-            }
-        } catch (Exception e) {
-            log.error("DbmsJobProcess.add: Exception: {}", e.getMessage(), e);
-        }
-        return offer;
-    }
-
-    public static boolean addQ(DbmsJobData dbmsJobData) {
-        try {
-            //offer => full -> return
-            //add   => full -> wait
-            //큐가 차더라도 바로 리턴함.
-            if (!AbstractDbmsJobProcess.DBMS_DATA_QUEUE.offer(dbmsJobData)) {
-                log.error("AbstractDbmsJobProcess.add: Queue Full Error, Size: {} EA, {}", DBMS_DATA_QUEUE.size(), dbmsJobData);
-                return false;
-            }
-            log.info("DBMS_DATA_QUEUE.offer: {} EA, {}", DBMS_DATA_QUEUE.size(), dbmsJobData);
-            return true;
-        } catch (Exception e) {
-            log.error("AbstractDbmsJobProcess.add: Exception: {}", e.getMessage(), e);
-        }
-        return false;
-    }
-
-    public void runJob(DbmsJobData dbmsJobData) {
-        if (dbmsJobData.getType() == DbmsJobType.DATA_TYPE_UNIT_SYST_STTS) {
-            TbUnitSystStts stts = (TbUnitSystStts)dbmsJobData.getData();
-            this.unitSystMapper.updateUnitSystStts(stts);       // 상태정보 업데이트
-            if (dbmsJobData.isHistory()) {
-                this.unitSystMapper.insertUnitSystSttsHs(stts); // 상태정보 이력저장
-            }
-        }
-        else {
-            process(dbmsJobData);
-        }
-    }
-
-}

+ 26 - 0
src/main/java/com/its/vds/process/DbmsData.java

@@ -0,0 +1,26 @@
+package com.its.vds.process;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class DbmsData {
+
+    public static final int DBMS_DATA_UNIT_SYST_STTS    = 0;
+    public static final int DBMS_DATA_CTLR_STTS         = 1;
+    public static final int DBMS_DATA_DTCT_CLCT         = 2;
+    public static final int DBMS_DATA_DTCT_STTS         = 3;
+    public static final int DBMS_DATA_VEH_CLCT          = 4;
+
+    private int     type;
+    private boolean isHistory;
+    private Object  data;
+
+    public DbmsData(int type, boolean isHistory, Object data) {
+        this.type      = type;
+        this.isHistory = isHistory;
+        this.data      = data;
+    }
+
+}

+ 16 - 0
src/main/java/com/its/vds/process/DbmsDataAsyncTask.java

@@ -0,0 +1,16 @@
+package com.its.vds.process;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DbmsDataAsyncTask {
+
+    @Async("dbmsDataExecutor")
+    public void run(DbmsDataProcess process, DbmsData data) {
+        process.runJob(data);
+    }
+
+}

+ 147 - 0
src/main/java/com/its/vds/process/DbmsDataProcess.java

@@ -0,0 +1,147 @@
+package com.its.vds.process;
+
+import com.its.app.AppUtils;
+import com.its.vds.config.ThreadPoolInitializer;
+import com.its.vds.dao.mapper.UnitSystMapper;
+import com.its.vds.dao.mapper.VdsCtlrMapper;
+import com.its.vds.dao.mapper.VdsDtctMapper;
+import com.its.vds.dao.mapper.VdsStatMapper;
+import com.its.vds.dao.mapper.batch.VdsCtlrDao;
+import com.its.vds.dao.mapper.batch.VdsDtctDao;
+import com.its.vds.entity.TbUnitSystStts;
+import com.its.vds.entity.TbVdsCtlrStts;
+import com.its.vds.entity.voVdsDtctClct;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class DbmsDataProcess {
+
+    private final LinkedBlockingQueue<DbmsData> DBMS_DATA_QUEUE = new LinkedBlockingQueue<>(1000);
+    private final ThreadPoolExecutor taskExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
+
+    private final DbmsDataAsyncTask asyncTask;
+    private final VdsCtlrDao vdsCtlrDao;
+    private final VdsDtctDao vdsDtctDao;
+
+    private final UnitSystMapper unitSystMapper;
+    private final VdsCtlrMapper vdsCtlrMapper;
+    private final VdsDtctMapper vdsDtctMapper;
+    private final VdsStatMapper vdsStatMapper;
+    int MAX_CORE = Runtime.getRuntime().availableProcessors();
+
+    @PostConstruct
+    void init() {
+    }
+
+    public void run() {
+        log.info("DbmsDataProcess.run: Start.");
+        if (this.MAX_CORE < 8) {
+            this.MAX_CORE = 8;
+        }
+        ThreadPoolInitializer poolInitializer = (ThreadPoolInitializer) AppUtils.getBean(ThreadPoolInitializer.class);
+        int executePool = Math.max(this.MAX_CORE, poolInitializer.getWork());
+        for (int ii = 0; ii < executePool; ii++) {
+            log.info("DbmsDataProcess.Task: {}", ii);
+            this.taskExecutor.execute(() -> {
+                while (true) {
+                    try {
+                        DbmsData data = DBMS_DATA_QUEUE.take();
+                        if (data != null) {
+                            asyncTask.run(this, data);
+                        }
+                        else {
+                            log.error("DbmsDataProcess.Task: Received data null");
+                        }
+                    }
+                    catch (Exception e) {
+                        log.error("DbmsDataProcess.Task: Exception: {}", e.getMessage(), e);
+                    }
+                }
+            });
+        }
+
+        log.info("DbmsDataProcess.run: ..End.");
+    }
+
+    /**
+     * 비동기 타스크에서 실행되는 함수.
+     * 클래스가 달라야 비동기 타스크로 실행된다.
+     * @param data
+     */
+    public void runJob(DbmsData data) {
+        if (data.getType() == DbmsData.DBMS_DATA_UNIT_SYST_STTS) {
+            TbUnitSystStts stts = (TbUnitSystStts) data.getData();
+            this.unitSystMapper.updateUnitSystStts(stts);       // 상태정보 업데이트
+            if (data.isHistory()) {
+                this.unitSystMapper.insertUnitSystSttsHs(stts); // 상태정보 이력저장
+            }
+        }
+        else {
+            process(data);
+        }
+    }
+
+    public void process(DbmsData data) {
+        try {
+            int type = data.getType();
+            switch(type) {
+                case DbmsData.DBMS_DATA_CTLR_STTS:
+                    List<TbVdsCtlrStts> ctlrSttsList = (List<TbVdsCtlrStts>)data.getData();
+                    this.vdsCtlrDao.updateStts(ctlrSttsList, data.isHistory());
+                    if (data.isHistory()) {
+                        this.vdsCtlrDao.insertStts(ctlrSttsList);
+                    }
+//                    for (TbVdsCtlrStts vo : ctlrSttsList) {
+//                        this.vdsCtlrMapper.updateVdsCtlrStts(vo);   // 상태정보 업데이트
+//                        if (data.isHistory()) {
+//                            this.vdsCtlrMapper.insertVdsCtlrSttsHs(vo); // 상태정보 이력저장
+//                        }
+//                    }
+                    ctlrSttsList.clear();
+                    break;
+                case DbmsData.DBMS_DATA_DTCT_CLCT:
+                    List<voVdsDtctClct> dtctClctList = (List<voVdsDtctClct>)data.getData();
+                    //this.vdsDtctDao.updateClct(dtctClctList, data.isHistory());
+                    this.vdsDtctDao.insertClct(dtctClctList);
+//                    for (voVdsDtctClct vo : dtctClctList) {
+//                        this.vdsDtctMapper.updateVdsDtctClctPnst(vo);   // 수집정보 업데이트
+//                        this.vdsDtctMapper.insertVdsDtctClct(vo);       // 수집정보 이력저장
+//                    }
+                    dtctClctList.clear();
+                    break;
+            }
+        } catch (Exception e) {
+            log.error("DbmsJobProcess.process: Exception: {}", e.toString());
+        }
+    }
+
+    /*
+     *  작업큐에 데이터 추가
+     */
+    public boolean add(DbmsData data) {
+        boolean offer = false;
+        try {
+            //offer => full -> return
+            //add   => full -> wait
+            //큐가 차더라도 바로 리턴함.
+            offer = DBMS_DATA_QUEUE.offer(data);
+            if (!offer) {
+                log.error("DbmsDataProcess.add: Queue Full Error, Size: {} EA", DBMS_DATA_QUEUE.size());
+            }
+        } catch (Exception e) {
+            log.error("DbmsDataProcess.add: Exception: {}", e.getMessage(), e);
+        }
+        return offer;
+    }
+
+}

+ 0 - 22
src/main/java/com/its/vds/process/DbmsJobData.java

@@ -1,22 +0,0 @@
-package com.its.vds.process;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class DbmsJobData {
-
-    public static final int DATA_TYPE_UNIT_SYST_STTS = 0;
-
-    private int     type;
-    private boolean isHistory;
-    private Object  data;
-
-    public DbmsJobData(int type, boolean isHistory, Object data) {
-        this.type      = type;
-        this.isHistory = isHistory;
-        this.data      = data;
-    }
-
-}

+ 0 - 73
src/main/java/com/its/vds/process/DbmsJobProcess.java

@@ -1,73 +0,0 @@
-package com.its.vds.process;
-
-import com.its.vds.dao.mapper.UnitSystMapper;
-import com.its.vds.dao.mapper.VdsCtlrMapper;
-import com.its.vds.dao.mapper.VdsDtctMapper;
-import com.its.vds.dao.mapper.VdsStatMapper;
-import com.its.vds.dao.mapper.batch.VdsCtlrDao;
-import com.its.vds.dao.mapper.batch.VdsDtctDao;
-import com.its.vds.entity.TbVdsCtlrStts;
-import com.its.vds.entity.voVdsDtctClct;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class DbmsJobProcess extends AbstractDbmsJobProcess {
-
-    private final VdsCtlrDao vdsCtlrDao;
-    private final VdsDtctDao vdsDtctDao;
-
-    private final UnitSystMapper unitSystMapper;
-    private final VdsCtlrMapper vdsCtlrMapper;
-    private final VdsDtctMapper vdsDtctMapper;
-    private final VdsStatMapper vdsStatMapper;
-
-    @Override
-    protected void postConstruct() {
-//        this.unitSystMapper = (UnitSystMapper) AppUtils.getBean(UnitSystMapper.class);
-//        this.vdsCtlrMapper = (VdsCtlrMapper) AppUtils.getBean(VdsCtlrMapper.class);
-//        this.vdsDtctMapper = (VdsDtctMapper) AppUtils.getBean(VdsDtctMapper.class);
-//        this.vdsStatMapper = (VdsStatMapper) AppUtils.getBean(VdsStatMapper.class);
-    }
-
-    @Override
-    public void process(DbmsJobData data) {
-        try {
-            int type = data.getType();
-            switch(type) {
-                case DbmsJobType.DATA_TYPE_CTLR_STTS:
-                    List<TbVdsCtlrStts> ctlrSttsList = (List<TbVdsCtlrStts>)data.getData();
-                    this.vdsCtlrDao.updateStts(ctlrSttsList, data.isHistory());
-                    if (data.isHistory()) {
-                        this.vdsCtlrDao.insertStts(ctlrSttsList);
-                    }
-//                    for (TbVdsCtlrStts vo : ctlrSttsList) {
-//                        this.vdsCtlrMapper.updateVdsCtlrStts(vo);   // 상태정보 업데이트
-//                        if (data.isHistory()) {
-//                            this.vdsCtlrMapper.insertVdsCtlrSttsHs(vo); // 상태정보 이력저장
-//                        }
-//                    }
-                    ctlrSttsList.clear();
-                    break;
-                case DbmsJobType.DATA_TYPE_DTCT_CLCT:
-                    List<voVdsDtctClct> dtctClctList = (List<voVdsDtctClct>)data.getData();
-                    //this.vdsDtctDao.updateClct(dtctClctList, data.isHistory());
-                    this.vdsDtctDao.insertClct(dtctClctList);
-//                    for (voVdsDtctClct vo : dtctClctList) {
-//                        this.vdsDtctMapper.updateVdsDtctClctPnst(vo);   // 수집정보 업데이트
-//                        this.vdsDtctMapper.insertVdsDtctClct(vo);       // 수집정보 이력저장
-//                    }
-                    dtctClctList.clear();
-                    break;
-            }
-        } catch (Exception e) {
-            log.error("DbmsJobProcess.process: Exception: {}", e.toString());
-        }
-    }
-
-}

+ 0 - 33
src/main/java/com/its/vds/process/DbmsJobTask.java

@@ -1,33 +0,0 @@
-package com.its.vds.process;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-@Slf4j
-@Service
-public class DbmsJobTask {
-
-    @Async("dbmsJobExecutor")
-    public void run(AbstractDbmsJobProcess dbmsJobProcess, DbmsJobData dbmsJobData) {
-
-        dbmsJobProcess.runJob(dbmsJobData);
-        /*log.info("DbmsJobTask.run: {}", Thread.currentThread().getName());
-
-        while (true) {
-            try {
-                DbmsJobData dbmsJobData = AbstractDbmsJobProcess.DBMS_DATA_QUEUE.take();
-                if (dbmsJobData != null) {
-                    log.debug("DbmsJobTask.run: runJob, {}", Thread.currentThread().getName());
-                    dbmsJobProcess.runJob(dbmsJobData);
-                }
-                else {
-                    log.error("DbmsJobTask.run: Received data null");
-                }
-            } catch (Exception e) {
-                log.error("DbmsJobTask.run: Exception: {}", e.getMessage(), e);
-            }
-        }*/
-    }
-
-}

+ 0 - 14
src/main/java/com/its/vds/process/DbmsJobType.java

@@ -1,14 +0,0 @@
-package com.its.vds.process;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class DbmsJobType {
-    public static final int DATA_TYPE_UNIT_SYST_STTS    = 0;
-    public static final int DATA_TYPE_CTLR_STTS         = 1;
-    public static final int DATA_TYPE_DTCT_CLCT         = 2;
-    public static final int DATA_TYPE_DTCT_STTS         = 3;
-    public static final int DATA_TYPE_VEH_CLCT          = 4;
-}

+ 4 - 3
src/main/java/com/its/vds/service/UnitSystService.java

@@ -6,8 +6,8 @@ import com.its.vds.config.ProcessConfig;
 import com.its.vds.dao.mapper.UnitSystMapper;
 import com.its.vds.entity.TbUnitSyst;
 import com.its.vds.entity.TbUnitSystStts;
-import com.its.vds.process.AbstractDbmsJobProcess;
-import com.its.vds.process.DbmsJobData;
+import com.its.vds.process.DbmsData;
+import com.its.vds.process.DbmsDataProcess;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
 @Transactional(rollbackFor = {Exception.class})
 public class UnitSystService {
 
+    private final DbmsDataProcess dbmsDataProcess;
     private final UnitSystMapper unitSystMapper;
     private final ConcurrentHashMap<String, TbUnitSyst> unitSystMap = new ConcurrentHashMap<>();
     private final TbUnitSystStts unitSystStts = TbUnitSystStts.builder().build();
@@ -118,7 +119,7 @@ public class UnitSystService {
             }
         }
         else {
-            AbstractDbmsJobProcess.addQ(new DbmsJobData(DbmsJobData.DATA_TYPE_UNIT_SYST_STTS, insHs, this.unitSystStts));
+            this.dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_UNIT_SYST_STTS, insHs, this.unitSystStts));
             if (insHs) {
                 loadMaster();
             }

+ 4 - 5
src/main/java/com/its/vds/service/VdsCtlrService.java

@@ -9,9 +9,8 @@ import com.its.vds.entity.TbVdsCtlr;
 import com.its.vds.entity.TbVdsCtlrStts;
 import com.its.vds.entity.TbVdsDtct;
 import com.its.vds.global.AppRepository;
-import com.its.vds.process.DbmsJobData;
-import com.its.vds.process.DbmsJobProcess;
-import com.its.vds.process.DbmsJobType;
+import com.its.vds.process.DbmsData;
+import com.its.vds.process.DbmsDataProcess;
 import com.its.vds.xnettcp.vds.protocol.VdsReqRTC;
 import com.its.vds.xnetudp.protocol.CENTER_VDS_RES_STATE;
 import com.its.vds.xnetudp.protocol.voVdsState;
@@ -196,8 +195,8 @@ public class VdsCtlrService {
 
         // 제어기 상태정보 DB 업데이트
         if (ctlrSttsList.size() > 0) {
-            DbmsJobProcess dbmsJobProcess = (DbmsJobProcess) AppUtils.getBean(DbmsJobProcess.class);
-            dbmsJobProcess.add(new DbmsJobData(DbmsJobType.DATA_TYPE_CTLR_STTS, insHs, ctlrSttsList));
+            DbmsDataProcess dbmsDataProcess = (DbmsDataProcess) AppUtils.getBean(DbmsDataProcess.class);
+            dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_CTLR_STTS, insHs, ctlrSttsList));
         }
 
         stts.setTotal((short)(normal+error));

+ 5 - 6
src/main/java/com/its/vds/xnettcp/vds/process/Job_Data.java

@@ -2,13 +2,12 @@ package com.its.vds.xnettcp.vds.process;
 
 import com.its.app.AppUtils;
 import com.its.app.utils.SysUtils;
-import com.its.vds.ui.MainUI;
 import com.its.vds.entity.TbVdsCtlr;
 import com.its.vds.entity.TbVdsDtct;
 import com.its.vds.entity.voVdsDtctClct;
-import com.its.vds.process.DbmsJobData;
-import com.its.vds.process.DbmsJobProcess;
-import com.its.vds.process.DbmsJobType;
+import com.its.vds.process.DbmsData;
+import com.its.vds.process.DbmsDataProcess;
+import com.its.vds.ui.MainUI;
 import com.its.vds.xnettcp.vds.protocol.VdsResFramePacket;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -130,9 +129,9 @@ public class Job_Data implements JobProtocol {
 			dtctClctList.add(dtct.getClct());
 		}
 
-		DbmsJobProcess dbmsJobProcess = (DbmsJobProcess) AppUtils.getBean(DbmsJobProcess.class);
+		DbmsDataProcess dbmsDataProcess = (DbmsDataProcess) AppUtils.getBean(DbmsDataProcess.class);
 		if (dtctClctList.size() > 0) {
-			dbmsJobProcess.add(new DbmsJobData(DbmsJobType.DATA_TYPE_DTCT_CLCT, false, dtctClctList));
+			dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_DTCT_CLCT, false, dtctClctList));
 		}
 
 		MainUI mainUI = MainUI.getInstance();

+ 2 - 3
src/main/java/com/its/vds/xnettcp/vds/process/VdsDataTask.java → src/main/java/com/its/vds/xnettcp/vds/process/VdsDataAsyncTask.java

@@ -6,11 +6,10 @@ import org.springframework.stereotype.Service;
 
 @Slf4j
 @Service
-public class VdsDataTask {
+public class VdsDataAsyncTask {
 
-    @Async("appJobExecutor")
+    @Async("workDataExecutor")
     public void run(VdsDataProcess serverDataProcess, VdsData serverData) {
-
         serverDataProcess.process(serverData);
     }
 

+ 6 - 2
src/main/java/com/its/vds/xnettcp/vds/process/VdsDataProcess.java

@@ -6,6 +6,7 @@ import com.its.vds.config.ThreadPoolInitializer;
 import com.its.vds.entity.TbVdsCtlr;
 import com.its.vds.xnettcp.vds.protocol.VdsProtocol;
 import com.its.vds.xnettcp.vds.protocol.VdsResFramePacket;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 import org.springframework.stereotype.Service;
@@ -16,9 +17,11 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 
 @Slf4j
+@RequiredArgsConstructor
 @Service
 public class VdsDataProcess {
 
+    private final VdsDataAsyncTask asyncTask;
     public static LinkedBlockingQueue<VdsData> SERVER_DATA_QUEUE = new LinkedBlockingQueue<>(1000);
     private ThreadPoolExecutor taskExecutor = (ThreadPoolExecutor)Executors.newFixedThreadPool(1);
     int MAX_CORE = Runtime.getRuntime().availableProcessors();
@@ -41,8 +44,9 @@ public class VdsDataProcess {
                     VdsData serverData = null;
                     try {
                         serverData = VdsDataProcess.SERVER_DATA_QUEUE.take();
-                        VdsDataTask handler = (VdsDataTask) AppUtils.getBean(VdsDataTask.class);
-                        handler.run(this, serverData);
+                        if (serverData != null) {
+                            asyncTask.run(this, serverData);
+                        }
                     } catch (InterruptedException e) {
                         log.error("VdsDataProcess.Task: Received data null");
                     }

+ 4 - 5
src/main/java/com/its/vds/xnetudp/service/CenterCommResponseService.java

@@ -3,9 +3,8 @@ package com.its.vds.xnetudp.service;
 import com.its.app.AppUtils;
 import com.its.vds.entity.TbVdsCtlr;
 import com.its.vds.entity.TbVdsCtlrStts;
-import com.its.vds.process.DbmsJobData;
-import com.its.vds.process.DbmsJobProcess;
-import com.its.vds.process.DbmsJobType;
+import com.its.vds.process.DbmsData;
+import com.its.vds.process.DbmsDataProcess;
 import com.its.vds.xnetudp.protocol.CENTER_VDS_RES_STATE;
 import com.its.vds.xnetudp.protocol.voVdsState;
 import lombok.extern.slf4j.Slf4j;
@@ -35,9 +34,9 @@ public class CenterCommResponseService {
         ctlrSttsList.add(vds.getStts());
 
         // 제어기 상태정보 DB 업데이트
-        DbmsJobProcess dbmsJobProcess = (DbmsJobProcess) AppUtils.getBean(DbmsJobProcess.class);
+        DbmsDataProcess dbmsDataProcess = (DbmsDataProcess) AppUtils.getBean(DbmsDataProcess.class);
         if (ctlrSttsList.size() > 0) {
-            dbmsJobProcess.add(new DbmsJobData(DbmsJobType.DATA_TYPE_CTLR_STTS, false, ctlrSttsList));
+            dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_CTLR_STTS, false, ctlrSttsList));
         }
 
         // 제어기상태정보 UDP 전송(모든 운영단말로 전송)