diff --git a/src/database/create-database.sql b/src/database/create-database.sql index fe8aafc..e3f830d 100644 --- a/src/database/create-database.sql +++ b/src/database/create-database.sql @@ -82,6 +82,7 @@ CREATE TABLE TB_DFX_AGENT_MESSAGE_HISTORY ( , CONSOLE_RECEIVE_TS TIMESTAMP , PROCESS_STATUS_CODE VARCHAR(64) , MESSAGE_DATA TEXT + , MESSAGE_DATA_COUNT DECIMAL(9) DEFAULT 0 , CONSTRAINT PK_DFX_AGENT_MESSAGE_HISTORY PRIMARY KEY (SENDER_AGENT_ID, MESSAGE_UUID) ); CREATE INDEX IX_DFX_AGENT_MESSAGE_HISTORY_1 ON TB_DFX_AGENT_MESSAGE_HISTORY (RECIPIENT_AGENT_ID); @@ -96,6 +97,7 @@ COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_TYPE_CODE IS '메시지 COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.CONSOLE_RECEIVE_TS IS '콘솔 수신 시간'; COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.PROCESS_STATUS_CODE IS '프로세스 상태 코드 CODE_GROUP: PROCESS_STATUS'; COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_DATA IS '메시지 데이터'; +COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_DATA_COUNT IS '메시지 데이터 갯수'; diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/DfxAgentInfoController.java b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/DfxAgentInfoController.java index d212b59..809a0da 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/DfxAgentInfoController.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/DfxAgentInfoController.java @@ -1,6 +1,7 @@ package com.bsmlab.dfx.dfxconsole.app.agent; import com.bsmlab.dfx.agent.config.AgentConfigDto; +import com.bsmlab.dfx.agent.listener.dto.ReceiveMessageDto; import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto; import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoService; import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto; @@ -54,4 +55,14 @@ public class DfxAgentInfoController { List dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryService.selectDfxAgentMessageHistoryDtoList(); return ResponseEntity.ok().body(dfxAgentMessageHistoryDtoList); } + + @PostMapping("/app-api/agent/getAgentMessageData") + public ResponseEntity getAgentMessageData(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto) { + try { + List> dataMapList = this.dfxAgentMessageHistoryService.selectDfxAgentMessageData(dfxAgentMessageHistoryDto); + return ResponseEntity.ok().body(dataMapList); + } catch (JsonProcessingException e) { + return ResponseEntity.internalServerError().body(ResponseUtils.toExceptionResponseDto(e)); + } + } } diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryDto.java b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryDto.java index d10a44b..b3ae1b0 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryDto.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryDto.java @@ -20,4 +20,5 @@ public class DfxAgentMessageHistoryDto { private long consoleReceiveTs; private String processStatusCode; private String messageData; + private int messageDataCount; } diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryService.java b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryService.java index dcb5631..a841139 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryService.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/app/agent/service/DfxAgentMessageHistoryService.java @@ -1,10 +1,14 @@ package com.bsmlab.dfx.dfxconsole.app.agent.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; @Service @RequiredArgsConstructor @@ -16,4 +20,11 @@ public class DfxAgentMessageHistoryService { List dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryList(); return dfxAgentMessageHistoryDtoList; } + + public List> selectDfxAgentMessageData(DfxAgentMessageHistoryDto inputDfxAgentMessageHistoryDto) throws JsonProcessingException { + DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid(inputDfxAgentMessageHistoryDto); + ObjectMapper objectMapper = new ObjectMapper(); + List> dataMapList = objectMapper.readValue(dfxAgentMessageHistoryDto.getMessageData(), new TypeReference>>() {}); + return dataMapList; + } } diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/app/communicate/service/ListenerService.java b/src/main/java/com/bsmlab/dfx/dfxconsole/app/communicate/service/ListenerService.java index a13104a..7a83193 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/app/communicate/service/ListenerService.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/app/communicate/service/ListenerService.java @@ -76,6 +76,14 @@ public class ListenerService { AckDto ackDto = null; try { ReceiveMessageDto receiveMessageDto = MessageUtils.toReceiveMessageDto(messageJsonString); + ObjectMapper objectMapper = new ObjectMapper(); + int messageDataCount = 0; + try { + List> dataMapList = objectMapper.readValue(receiveMessageDto.getData(), new TypeReference>>() {}); + messageDataCount = dataMapList.size(); + } catch (JsonProcessingException e) { + log.error("cannot convert data on receiveMessageDto messageUuid: {}", receiveMessageDto.getMessageUuid()); + } DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto = DfxAgentMessageHistoryDto.builder() .senderAgentId(receiveMessageDto.getSenderHostId()) .senderTs(receiveMessageDto.getSenderTimestamp()) @@ -85,7 +93,7 @@ public class ListenerService { .messageTypeCode(receiveMessageDto.getMessageType().name()) .consoleReceiveTs(System.currentTimeMillis()) .processStatusCode(receiveMessageDto.getProcessStatus().name()) - .messageData(receiveMessageDto.getData()) + .messageData(receiveMessageDto.getData()).messageDataCount(messageDataCount) .build(); dfxAgentMessageHistoryMapper.insertDfxAgentMessageHistory(dfxAgentMessageHistoryDto); ackDto = AckDto.builder().result(AckDto.ResultType.RECEIVE_SUCCESS).build(); diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/dto/ExceptionResponseDto.java b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/dto/ExceptionResponseDto.java index c6b9150..2fb012a 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/dto/ExceptionResponseDto.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/dto/ExceptionResponseDto.java @@ -9,5 +9,7 @@ import lombok.*; @Setter @ToString public class ExceptionResponseDto { + private String type; private String message; + private String description; } diff --git a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/support/ResponseUtils.java b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/support/ResponseUtils.java index c893139..ec914e0 100644 --- a/src/main/java/com/bsmlab/dfx/dfxconsole/framework/support/ResponseUtils.java +++ b/src/main/java/com/bsmlab/dfx/dfxconsole/framework/support/ResponseUtils.java @@ -4,7 +4,7 @@ import com.bsmlab.dfx.dfxconsole.framework.dto.ExceptionResponseDto; public class ResponseUtils { public static ExceptionResponseDto toExceptionResponseDto(Exception e) { - ExceptionResponseDto exceptionResponseDto = ExceptionResponseDto.builder().message(e.getMessage()).build(); + ExceptionResponseDto exceptionResponseDto = ExceptionResponseDto.builder().type(e.getClass().getName()).message(e.getMessage()).build(); return exceptionResponseDto; } } diff --git a/src/main/resources/mapper/app/dfx-agent-message-history.xml b/src/main/resources/mapper/app/dfx-agent-message-history.xml index 722dc6c..d1feaba 100644 --- a/src/main/resources/mapper/app/dfx-agent-message-history.xml +++ b/src/main/resources/mapper/app/dfx-agent-message-history.xml @@ -4,10 +4,10 @@ - - -
- - -
- -
- -
- -

© 2017–2021

- - - - - - -