dropBoxProcessorThreadPoolTaskExecutor를 10ms 단위의 Scheduler로 변경하여야 함 (ThreadPoolTaskScheduler.scheduleWithFixedDelay)

main
semin.baek 8 months ago
parent e0ea8cff19
commit b28274da17

@ -22,7 +22,7 @@ configurations {
repositories {
mavenCentral()
maven {
url 'https://maven.cubrid.org'
url = 'https://maven.cubrid.org'
}
}
/*

@ -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 &
java -jar $AGENT_HOME/lib/dfxagent.jar --setting.file=$AGENT_HOME/conf/settings.json &

@ -35,7 +35,8 @@
"packages": [
{
"com.bsmlab.dfx.agent": "DEBUG",
"jdbc.sqlonly": "DEBUG"
"jdbc.sqlonly": "DEBUG",
"org.springframework": "INFO"
}
]
},

@ -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); // 최대 쓰레드

@ -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);
}
}

@ -58,7 +58,7 @@ public class PostmanSchedulerService {
}
public void launch() { // 실행확인됨
log.debug("{} @PostConstruct Run", this.getClass().getName());
log.info("{} launch", this.getClass().getName());
List<AgentConfigDto.Postman> postmanList = agentConfigReader.getScheduledTypePostmanList();
if(postmanList != null) {
for(AgentConfigDto.Postman postman : postmanList) {

@ -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;

Loading…
Cancel
Save