From b28274da177e965a755348ed6f2beed521f4f32c Mon Sep 17 00:00:00 2001 From: "semin.baek" Date: Mon, 12 May 2025 19:54:47 +0900 Subject: [PATCH] =?UTF-8?q?dropBoxProcessorThreadPoolTaskExecutor=EB=A5=BC?= =?UTF-8?q?=2010ms=20=EB=8B=A8=EC=9C=84=EC=9D=98=20Scheduler=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EC=97=AC=EC=95=BC=20=ED=95=A8=20(Th?= =?UTF-8?q?readPoolTaskScheduler.scheduleWithFixedDelay)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- src/docs/script/startup.sh | 2 +- .../dfxagent-bd-test-cubrid-local.json | 3 ++- .../dfx/agent/config/DfxAgentConfiguration.java | 4 +--- .../task/dropbox/DropBoxTaskExecutorService.java | 14 ++++++++++---- .../task/postman/PostmanSchedulerService.java | 2 +- .../task/status/StatusCheckerSchedulerService.java | 3 --- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index 5cf2b9a..60524ab 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ configurations { repositories { mavenCentral() maven { - url 'https://maven.cubrid.org' + url = 'https://maven.cubrid.org' } } /* diff --git a/src/docs/script/startup.sh b/src/docs/script/startup.sh index 68a53ae..d937d27 100644 --- a/src/docs/script/startup.sh +++ b/src/docs/script/startup.sh @@ -1,4 +1,4 @@ #!/bin/sh AGENT_HOME=/home/dfxagent/agent TODAY=$(date "+%Y%m%d") -java -jar $AGENT_HOME/lib/dfxagent.jar --setting.file=$AGENT_HOME/conf/settings.json > $AGENT_HOME/logs/agent.$TODAY.log & \ No newline at end of file +java -jar $AGENT_HOME/lib/dfxagent.jar --setting.file=$AGENT_HOME/conf/settings.json & \ No newline at end of file diff --git a/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json b/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json index 3779e8a..45bc6bb 100644 --- a/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json +++ b/src/docs/settings-examples/dfxagent-bd-test-cubrid-local.json @@ -35,7 +35,8 @@ "packages": [ { "com.bsmlab.dfx.agent": "DEBUG", - "jdbc.sqlonly": "DEBUG" + "jdbc.sqlonly": "DEBUG", + "org.springframework": "INFO" } ] }, diff --git a/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java b/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java index 91c5057..c2ae54a 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java @@ -23,7 +23,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import java.io.File; -import java.io.FileWriter; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; @@ -32,7 +31,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.*; -import java.util.concurrent.Executor; @Slf4j @Getter @@ -183,7 +181,7 @@ public class DfxAgentConfiguration { // (수신 처리) 메시지 수신 - 저장 후 수신 메시지 처리 쓰레드 설정 @Bean(name = "dropBoxProcessorThreadPoolTaskExecutor") - public Executor dropBoxProcessorThreadPoolTaskExecutor() { + public ThreadPoolTaskExecutor dropBoxProcessorThreadPoolTaskExecutor() { ThreadPoolTaskExecutor dropBoxProcessorThreadPoolTaskExecutor = new ThreadPoolTaskExecutor(); dropBoxProcessorThreadPoolTaskExecutor.setCorePoolSize(30); // 최소 쓰레드 dropBoxProcessorThreadPoolTaskExecutor.setMaxPoolSize(300); // 최대 쓰레드 diff --git a/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java b/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java index bc96b67..fffc239 100644 --- a/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java +++ b/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java @@ -15,6 +15,7 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.client.RestTemplate; @@ -30,6 +31,7 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class DropBoxTaskExecutorService { + private final ThreadPoolTaskExecutor dropBoxProcessorThreadPoolTaskExecutor; private final AgentConfigReader agentConfigReader; private final SqlExecuteService sqlExecuteService; private final DropBoxService dropBoxService; @@ -40,7 +42,7 @@ public class DropBoxTaskExecutorService { * @param messageFilePath 메지시 파일 절대 경로 */ @SuppressWarnings("unchecked") - @Async("dropBoxProcessorThreadPoolTaskExecutor") +// @Async("dropBoxProcessorThreadPoolTaskExecutor") public void processDropBox(String messageFilePath) { ReceiveMessageDto receiveMessageDto = ReceiveMessageDto.builder().build(); ReceiveMessageDto.ProcessStatus processStatus; @@ -155,18 +157,22 @@ public class DropBoxTaskExecutorService { } public void launch() { // 실행확인됨 - log.debug("{} @PostConstruct Run", this.getClass().getName()); - while(true) { + log.debug("{} launch", this.getClass().getName()); + Runnable runnable = () -> { try { - Thread.sleep(10); + log.info("dropBoxProcessThread run {}", Thread.currentThread().getName()); String messageFilePath = dropBoxService.poll(); if(StringUtils.isNotBlank(messageFilePath)) { this.processDropBox(messageFilePath); } + Thread.sleep(10); } catch (InterruptedException e) { log.error("{}", e, e); Thread.currentThread().interrupt(); } + }; + for(int i = 0; i < this.dropBoxProcessorThreadPoolTaskExecutor.getCorePoolSize(); i++) { + this.dropBoxProcessorThreadPoolTaskExecutor.execute(runnable); } } diff --git a/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java b/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java index 0aeffcc..56e042f 100644 --- a/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java +++ b/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java @@ -58,7 +58,7 @@ public class PostmanSchedulerService { } public void launch() { // 실행확인됨 - log.debug("{} @PostConstruct Run", this.getClass().getName()); + log.info("{} launch", this.getClass().getName()); List postmanList = agentConfigReader.getScheduledTypePostmanList(); if(postmanList != null) { for(AgentConfigDto.Postman postman : postmanList) { diff --git a/src/main/java/com/bsmlab/dfx/agent/task/status/StatusCheckerSchedulerService.java b/src/main/java/com/bsmlab/dfx/agent/task/status/StatusCheckerSchedulerService.java index 86de1b8..6457f4a 100644 --- a/src/main/java/com/bsmlab/dfx/agent/task/status/StatusCheckerSchedulerService.java +++ b/src/main/java/com/bsmlab/dfx/agent/task/status/StatusCheckerSchedulerService.java @@ -4,8 +4,6 @@ import com.bsmlab.dfx.agent.config.AgentConfigDto; import com.bsmlab.dfx.agent.config.AgentConfigReader; import com.bsmlab.dfx.agent.listener.dto.AckDto; import com.bsmlab.dfx.agent.listener.dto.CommandDto; -import com.bsmlab.dfx.agent.listener.dto.ReceiveMessageDto; -import com.bsmlab.dfx.agent.support.exception.DfxException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -19,7 +17,6 @@ import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import java.util.HashMap; import java.util.List; import java.util.UUID; import java.util.concurrent.ScheduledFuture;