From 802177878a529acbd250114698920c91f8bc910b Mon Sep 17 00:00:00 2001 From: "semin.baek" Date: Wed, 27 Aug 2025 19:51:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=EC=86=94=EB=A1=9C=EC=9D=98=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=86=A1=EC=8B=A0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B0=9C=EB=B0=9C=20=20-=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=90=98=EC=A7=80=20=EC=95=8A=EC=95=98=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dfx/agent/config/AgentConfigReader.java | 3 ++ .../dfx/agent/support/MessageUtils.java | 31 ++++++++++++++----- .../task/postman/PostmanSchedulerService.java | 20 ++++-------- .../status/StatusCheckerSchedulerService.java | 2 ++ 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigReader.java b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigReader.java index e8fe7a1..8ec3992 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigReader.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigReader.java @@ -3,6 +3,7 @@ package com.bsmlab.dfx.agent.config; import com.fasterxml.jackson.databind.DatabindException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -26,6 +27,8 @@ public class AgentConfigReader { private String applicationVersion; @Value("${spring.application.commitId}") private String applicationCommitId; + @Setter + private boolean connectedConsole; public void loadConfigFile(String configFilePath) { try { diff --git a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java index 1ecb460..2d36538 100644 --- a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java +++ b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java @@ -23,12 +23,13 @@ import java.util.*; @Slf4j public class MessageUtils { + private static final ObjectMapper objectMapper = new ObjectMapper(); + private MessageUtils() {}; @SuppressWarnings("unchecked") public static ReceiveMessageDto toReceiveMessageDto(String messageJsonString) throws IllegalMessageException, NullMessageException, InCompleteMessageException { ReceiveMessageDto receiveMessageDto = null; - ObjectMapper objectMapper = new ObjectMapper(); Map map = null; try { map = objectMapper.readValue(messageJsonString, new TypeReference>() {}); @@ -164,7 +165,6 @@ public class MessageUtils { } public static AckDto toAckDto(String messageJsonString) throws NullMessageException, IllegalMessageException { - ObjectMapper objectMapper = new ObjectMapper(); Map map = null; AckDto ackDto; try { @@ -187,7 +187,6 @@ public class MessageUtils { public static CommandDto toCommandDto(String messageJsonString) throws IllegalMessageException, NullMessageException { CommandDto commandDto; - ObjectMapper objectMapper = new ObjectMapper(); Map map = null; try { map = objectMapper.readValue(messageJsonString, new TypeReference>() {}); @@ -209,7 +208,6 @@ public class MessageUtils { AgentConfigDto.KnownAgent recipientAgent = agentConfigReader.getKnownAgent(receiveMessageDto.getRecipientHostId()); String targetHostId = recipientAgent.getRoutingHostIdList().get(0); AgentConfigDto.KnownAgent knownAgent = agentConfigReader.getKnownAgent(targetHostId); - ObjectMapper objectMapper = new ObjectMapper(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); httpHeaders.set("User-Agent", agentConfigReader.getApplicationName() + ", version: " + agentConfigReader.getApplicationVersion() + "(" + agentConfigReader.getApplicationCommitId() + ")" @@ -238,7 +236,6 @@ public class MessageUtils { } } AgentConfigDto.KnownAgent knownAgent = agentConfigReader.getKnownAgent(targetHostId); - ObjectMapper objectMapper = new ObjectMapper(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); httpHeaders.set("User-Agent", agentConfigReader.getApplicationName() + ", version: " + agentConfigReader.getApplicationVersion() + "(" + agentConfigReader.getApplicationCommitId() + ")" @@ -267,7 +264,6 @@ public class MessageUtils { String url = "http://" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + "/command"; log.debug("StatusChecker to {} send a message UUID {}", knownAgent.getHostName(), messageUuid); String response = ""; - ObjectMapper objectMapper = new ObjectMapper(); AckDto ackDto = null; response = restTemplate.postForObject(url, bodyEntity, String.class); ackDto = objectMapper.readValue(response, new TypeReference() {}); @@ -275,7 +271,6 @@ public class MessageUtils { } public static AckDto announceInformation(AgentConfigReader agentConfigReader) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); String messageUuid = UUID.randomUUID().toString(); String data = objectMapper.writeValueAsString(agentConfigReader.getAgentConfigDto()); CommandDto commandDto = CommandDto.builder().commandType(CommandDto.CommandType.INFORMATION).messageUuid(messageUuid).data(data).build(); @@ -291,7 +286,7 @@ public class MessageUtils { + agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName() + ":" + agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleListenPort() + "/command"; - log.debug("StatusChecker to console {} send a message UUID {}", agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName(), messageUuid); + log.debug("announceInformation to console {} send a message UUID {}", agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName(), messageUuid); String response = ""; AckDto ackDto = null; response = restTemplate.postForObject(url, bodyEntity, String.class); @@ -299,4 +294,24 @@ public class MessageUtils { return ackDto; } + public static AckDto announceMessageHistory(AgentConfigReader agentConfigReader, ReceiveMessageDto receiveMessageDto) throws JsonProcessingException { + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + httpHeaders.set("User-Agent", agentConfigReader.getApplicationName() + ", version: " + agentConfigReader.getApplicationVersion() + "(" + agentConfigReader.getApplicationCommitId() + ")" + + ", host ID: " + agentConfigReader.getAgentConfigDto().getMyHostId() + + ", action: message-history" + ); + HttpEntity bodyEntity = new HttpEntity<>(receiveMessageDto, httpHeaders); + RestTemplate restTemplate = new RestTemplate(); + String url = (agentConfigReader.getAgentConfigDto().getStatusChecker().isConsoleSslEnabled() ? "https://" : "http://") + + agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName() + ":" + + agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleListenPort() + + "/listen"; + log.debug("announceMessageHistory to console {} send a message UUID {}", agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName(), receiveMessageDto.getMessageUuid()); + String response = ""; + AckDto ackDto = null; + response = restTemplate.postForObject(url, bodyEntity, String.class); + ackDto = objectMapper.readValue(response, new TypeReference() {}); + return ackDto; + } } 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 cf0af03..4317e0e 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 @@ -96,20 +96,6 @@ public class PostmanSchedulerService { .recipientHostId(postman.getRecipientHostId()).recipientDropBoxId(postman.getRecipientDropBoxId()) .routingHostList(routingHostList) .data(dataString).build(); - /* - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.setContentType(MediaType.APPLICATION_JSON); - httpHeaders.set("User-Agent", agentConfigReader.getApplicationName() + ", version: " + agentConfigReader.getApplicationVersion() + "(" + agentConfigReader.getApplicationCommitId() + ")" - + ", host ID: " + agentConfigReader.getAgentConfigDto().getMyHostId() - + ", action: postman(postman-id: " + postman.getPostmanId() + ")" - ); - HttpEntity bodyEntity = new HttpEntity<>(receiveMessageDto, httpHeaders); - RestTemplate restTemplate = new RestTemplate(); - String url = "http://" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + "/listen"; - log.debug("postman to {} send a message UUID {} (data count: {})", receiveMessageDto.getRecipientHostId(), receiveMessageDto.getMessageUuid(), dataMapList.size()); - response = restTemplate.postForObject(url, bodyEntity, String.class); - AckDto ackDto = objectMapper.readValue(response, new TypeReference() {}); - */ log.debug("postman to {} send a message UUID {} (data count: {})", receiveMessageDto.getRecipientHostId(), receiveMessageDto.getMessageUuid(), dataMapList.size()); AckDto ackDto = MessageUtils.send(this.agentConfigReader, postman.getPostmanId(), receiveMessageDto); log.debug("postman received ack from {} ack: {}", receiveMessageDto.getRecipientHostId(), ackDto); @@ -121,6 +107,12 @@ public class PostmanSchedulerService { String postProcessingSqlId = postman.getMessage().getPostProcessingSqlId(); sqlExecuteService.update(dataSourceId, postProcessingSqlId, new HashMap()); } + if(agentConfigReader.isConnectedConsole()) { + ReceiveMessageDto.ProcessStatus processStatus = AckDto.ResultType.RECEIVE_SUCCESS == ackDto.getResult() ? ReceiveMessageDto.ProcessStatus.PROCESS_RECEIVED : ReceiveMessageDto.ProcessStatus.PROCESS_FAIL; + receiveMessageDto.setProcessStatus(processStatus); + receiveMessageDto.setReceivedTimestamp(System.currentTimeMillis()); + MessageUtils.announceMessageHistory(this.agentConfigReader, receiveMessageDto); + } } } catch (JsonProcessingException e) { 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 4d34abf..038e3a8 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 @@ -72,10 +72,12 @@ public class StatusCheckerSchedulerService { if(AckDto.ResultType.PROCESS_SUCCESS == ackDto.getResult()) { // console response log.debug("console {} is ALIVE", this.agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName()); + this.agentConfigReader.setConnectedConsole(true); } else { // console is down log.debug("console {} is DOWN", this.agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName()); + this.agentConfigReader.setConnectedConsole(false); } } catch (JsonProcessingException e) { log.debug("Console {} information message is not valid then set DOWN", this.agentConfigReader.getAgentConfigDto().getStatusChecker().getConsoleHostName());