에이전트 정보 수신 진행중

에이전트의 정보 조회 API 개발
main
semin.baek 5 months ago
parent 66e9a715bb
commit 35e7ca3205

@ -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 '메시지 데이터 갯수';

@ -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<DfxAgentMessageHistoryDto> dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryService.selectDfxAgentMessageHistoryDtoList();
return ResponseEntity.ok().body(dfxAgentMessageHistoryDtoList);
}
@PostMapping("/app-api/agent/getAgentMessageData")
public ResponseEntity<?> getAgentMessageData(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto) {
try {
List<Map<String, Object>> dataMapList = this.dfxAgentMessageHistoryService.selectDfxAgentMessageData(dfxAgentMessageHistoryDto);
return ResponseEntity.ok().body(dataMapList);
} catch (JsonProcessingException e) {
return ResponseEntity.internalServerError().body(ResponseUtils.toExceptionResponseDto(e));
}
}
}

@ -20,4 +20,5 @@ public class DfxAgentMessageHistoryDto {
private long consoleReceiveTs;
private String processStatusCode;
private String messageData;
private int messageDataCount;
}

@ -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<DfxAgentMessageHistoryDto> dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryList();
return dfxAgentMessageHistoryDtoList;
}
public List<Map<String, Object>> selectDfxAgentMessageData(DfxAgentMessageHistoryDto inputDfxAgentMessageHistoryDto) throws JsonProcessingException {
DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid(inputDfxAgentMessageHistoryDto);
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> dataMapList = objectMapper.readValue(dfxAgentMessageHistoryDto.getMessageData(), new TypeReference<List<Map<String, Object>>>() {});
return dataMapList;
}
}

@ -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<Map<String, Object>> dataMapList = objectMapper.readValue(receiveMessageDto.getData(), new TypeReference<List<Map<String, Object>>>() {});
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();

@ -9,5 +9,7 @@ import lombok.*;
@Setter
@ToString
public class ExceptionResponseDto {
private String type;
private String message;
private String description;
}

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

@ -4,10 +4,10 @@
<select id="selectDfxAgentMessageHistoryList" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
SELECT A.SENDER_AGENT_ID, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TS, A.RECIPIENT_AGENT_ID, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TS, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TS, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA
SELECT A.SENDER_AGENT_ID, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TS, A.RECIPIENT_AGENT_ID, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TS, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TS, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA, A.MESSAGE_DATA_COUNT
, B.HOST_NAME AS SENDER_HOST_NAME, C.HOST_NAME AS RECIPIENT_HOST_NAME
FROM (
SELECT SENDER_AGENT_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_TS, MESSAGE_UUID, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA
SELECT SENDER_AGENT_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_TS, MESSAGE_UUID, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA, MESSAGE_DATA_COUNT
FROM TB_DFX_AGENT_MESSAGE_HISTORY
WHERE 1 = 1
ORDER BY CONSOLE_RECEIVE_TS
@ -24,7 +24,7 @@
<select id="selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
SELECT A.SENDER_AGENT_ID, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TS, A.RECIPIENT_AGENT_ID, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TS, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TS, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA
SELECT A.SENDER_AGENT_ID, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TS, A.RECIPIENT_AGENT_ID, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TS, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TS, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA, A.MESSAGE_DATA_COUNT
, B.HOST_NAME AS SENDER_HOST_NAME, C.HOST_NAME AS RECIPIENT_HOST_NAME
FROM TB_DFX_AGENT_MESSAGE_HISTORY A
JOIN TB_DFX_AGENT_INFO B ON (A.SENDER_AGENT_ID = B.AGENT_ID)
@ -38,10 +38,10 @@
<insert id="insertDfxAgentMessageHistory" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
INSERT INTO TB_DFX_AGENT_MESSAGE_HISTORY (
SENDER_AGENT_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_TS, MESSAGE_UUID, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA
SENDER_AGENT_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_TS, MESSAGE_UUID, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA, MESSAGE_DATA_COUNT
)
VALUES (
#{senderAgentId}, #{senderTs}, #{recipientAgentId}, #{recipientTs}, #{messageUuid}, #{messageTypeCode}, #{consoleReceiveTs}, #{processStatusCode}, #{messageData}
#{senderAgentId}, #{senderTs}, #{recipientAgentId}, #{recipientTs}, #{messageUuid}, #{messageTypeCode}, #{consoleReceiveTs}, #{processStatusCode}, #{messageData}, #{messageDataCount}
)
]]>
</insert>

@ -1,66 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<meta name="generator" content="Hugo 0.84.0">
<title>Signin Template · Bootstrap v5.0</title>
<link rel="canonical" href="https://getbootstrap.com/docs/5.0/examples/sign-in/">
<!-- Bootstrap core CSS -->
<link href="/assets/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
<!-- Custom styles for this template -->
<link href="/assets/css/login.css" rel="stylesheet">
</head>
<body class="text-center">
<main class="form-signin">
<form method="post" action="/loginProcess">
<h1 class="h3 mb-3 fw-normal">Please sign in</h1>
<div class="form-floating">
<input type="text" name="username" class="form-control" id="floatingInput" placeholder="name@example.com">
<label for="floatingInput">Email address</label>
</div>
<div class="form-floating">
<input type="password" name="password" class="form-control" id="floatingPassword" placeholder="Password">
<label for="floatingPassword">Password</label>
</div>
<div class="checkbox mb-3">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<button class="w-100 btn btn-lg btn-primary" type="submit">Sign in</button>
<p class="mt-5 mb-3 text-muted">&copy; 20172021</p>
</form>
</main>
</body>
</html>
Loading…
Cancel
Save