feat: 2.6.0:

1、日志归档定时任务
This commit is contained in:
zhengweilin 2024-01-04 10:25:12 +08:00
parent 105076d033
commit e2a34f9e3a
4 changed files with 33 additions and 17 deletions

View File

@ -60,6 +60,9 @@ public class LogTaskDTO implements Serializable {
*/ */
private Long realTime; private Long realTime;
/**
* 日志模型集合
*/
private List<TaskLogFieldDTO> fieldList; private List<TaskLogFieldDTO> fieldList;
} }

View File

@ -9,6 +9,7 @@ import com.aizuda.easy.retry.server.job.task.support.callback.ClientCallbackCont
import com.aizuda.easy.retry.server.job.task.support.executor.JobExecutorContext; import com.aizuda.easy.retry.server.job.task.support.executor.JobExecutorContext;
import com.aizuda.easy.retry.server.job.task.support.stop.TaskStopJobContext; import com.aizuda.easy.retry.server.job.task.support.stop.TaskStopJobContext;
import com.aizuda.easy.retry.server.job.task.support.strategy.BlockStrategies; import com.aizuda.easy.retry.server.job.task.support.strategy.BlockStrategies;
import com.aizuda.easy.retry.server.model.dto.LogTaskDTO;
import com.aizuda.easy.retry.template.datasource.persistence.po.Job; import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobLogMessage; import com.aizuda.easy.retry.template.datasource.persistence.po.JobLogMessage;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask; import com.aizuda.easy.retry.template.datasource.persistence.po.JobTask;
@ -35,7 +36,7 @@ public interface JobTaskConverter {
JobTaskPrepareDTO toJobTaskPrepare(JobPartitionTask job); JobTaskPrepareDTO toJobTaskPrepare(JobPartitionTask job);
@Mappings( @Mappings(
@Mapping(source = "id", target = "jobId") @Mapping(source = "id", target = "jobId")
) )
JobTaskPrepareDTO toJobTaskPrepare(Job job); JobTaskPrepareDTO toJobTaskPrepare(Job job);
@ -50,11 +51,15 @@ public interface JobTaskConverter {
BlockStrategies.BlockStrategyContext toBlockStrategyContext(JobTaskPrepareDTO prepareDTO); BlockStrategies.BlockStrategyContext toBlockStrategyContext(JobTaskPrepareDTO prepareDTO);
TaskStopJobContext toStopJobContext(BlockStrategies.BlockStrategyContext context); TaskStopJobContext toStopJobContext(BlockStrategies.BlockStrategyContext context);
TaskStopJobContext toStopJobContext(JobExecutorResultDTO context); TaskStopJobContext toStopJobContext(JobExecutorResultDTO context);
TaskStopJobContext toStopJobContext(JobTaskPrepareDTO context); TaskStopJobContext toStopJobContext(JobTaskPrepareDTO context);
JobLogMessage toJobLogMessage(JobLogDTO jobLogDTO); JobLogMessage toJobLogMessage(JobLogDTO jobLogDTO);
JobLogMessage toJobLogMessage(LogTaskDTO logTaskDTO);
JobLogDTO toJobLogDTO(JobExecutorContext context); JobLogDTO toJobLogDTO(JobExecutorContext context);
JobLogDTO toJobLogDTO(JobExecutorResultDTO resultDTO); JobLogDTO toJobLogDTO(JobExecutorResultDTO resultDTO);
@ -86,7 +91,7 @@ public interface JobTaskConverter {
JobExecutorResultDTO toJobExecutorResultDTO(ClientCallbackContext context); JobExecutorResultDTO toJobExecutorResultDTO(ClientCallbackContext context);
@Mappings( @Mappings(
@Mapping(source = "id", target = "taskId") @Mapping(source = "id", target = "taskId")
) )
JobExecutorResultDTO toJobExecutorResultDTO(JobTask jobTask); JobExecutorResultDTO toJobExecutorResultDTO(JobTask jobTask);

View File

@ -0,0 +1,16 @@
package com.aizuda.easy.retry.server.job.task.support.schedule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* jogLogMessage 日志归档
*
* @author zhengweilin
* @version 2.6.0
* @date 2024/01/04
*/
@Slf4j
@Component
public class JobLogArchivingSchedule {
}

View File

@ -9,6 +9,7 @@ import com.aizuda.easy.retry.common.core.model.NettyResult;
import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.common.handler.PostHttpRequestHandler; import com.aizuda.easy.retry.server.common.handler.PostHttpRequestHandler;
import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter;
import com.aizuda.easy.retry.server.model.dto.LogTaskDTO; import com.aizuda.easy.retry.server.model.dto.LogTaskDTO;
import com.aizuda.easy.retry.server.model.dto.TaskLogFieldDTO; import com.aizuda.easy.retry.server.model.dto.TaskLogFieldDTO;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobLogMessageMapper; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobLogMessageMapper;
@ -56,39 +57,30 @@ public class ReportLogHttpRequestHandler extends PostHttpRequestHandler {
@Override @Override
@Transactional @Transactional
public String doHandler(String content, UrlQuery urlQuery, HttpHeaders headers) { public String doHandler(String content, UrlQuery urlQuery, HttpHeaders headers) {
LogUtils.info(log, "Batch Log Report Retry Data. Content:[{}]", content);
LogUtils.info(log, "Begin Handler Log Report Data. <|>{}<|>", content);
EasyRetryRequest retryRequest = JsonUtil.parseObject(content, EasyRetryRequest.class); EasyRetryRequest retryRequest = JsonUtil.parseObject(content, EasyRetryRequest.class);
Object[] args = retryRequest.getArgs(); Object[] args = retryRequest.getArgs();
Assert.notEmpty(args, () -> new EasyRetryServerException("日志上报的数据不能为空. ReqId:[{}]", retryRequest.getReqId())); Assert.notEmpty(args, () -> new EasyRetryServerException("日志上报的数据不能为空. ReqId:[{}]", retryRequest.getReqId()));
Map<Long, List<LogTaskDTO>> logTaskDTOMap = JsonUtil.parseList(JsonUtil.toJsonString(args[0]), LogTaskDTO.class).stream().collect( Map<Long, List<LogTaskDTO>> logTaskDTOMap = JsonUtil.parseList(JsonUtil.toJsonString(args[0]), LogTaskDTO.class).stream().collect(Collectors.groupingBy(i -> i.getTaskId(), Collectors.toList()));
Collectors.groupingBy(i -> i.getTaskId(), Collectors.toList()));
List<JobLogMessage> jobLogMessageList = new ArrayList<>(); List<JobLogMessage> jobLogMessageList = new ArrayList<>();
for (List<LogTaskDTO> logTaskDTOList : logTaskDTOMap.values()) { for (List<LogTaskDTO> logTaskDTOList : logTaskDTOMap.values()) {
LogTaskDTO logTaskDTO = logTaskDTOList.get(0); JobLogMessage jobLogMessage = JobTaskConverter.INSTANCE.toJobLogMessage(logTaskDTOList.get(0));
JobLogMessage jobLogMessage = new JobLogMessage();
jobLogMessage.setCreateDt(LocalDateTime.now()); jobLogMessage.setCreateDt(LocalDateTime.now());
jobLogMessage.setNamespaceId(logTaskDTO.getNamespaceId());
jobLogMessage.setGroupName(logTaskDTO.getGroupName());
jobLogMessage.setJobId(logTaskDTO.getJobId());
jobLogMessage.setTaskBatchId(logTaskDTO.getTaskBatchId());
jobLogMessage.setTaskId(logTaskDTO.getTaskId());
jobLogMessage.setLogNum(logTaskDTOList.size()); jobLogMessage.setLogNum(logTaskDTOList.size());
jobLogMessage.setRealTime(logTaskDTO.getRealTime()); List<Map<String, String>> messageMapList = logTaskDTOList.stream().map(taskDTO -> taskDTO.getFieldList()
jobLogMessage.setMessage(JsonUtil.toJsonString(logTaskDTOList.stream().map(taskDTO -> taskDTO.getFieldList()
.stream().filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue())) .stream().filter(logTaskDTO_ -> !Objects.isNull(logTaskDTO_.getValue()))
.collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue))).collect(Collectors.toList()))); .collect(Collectors.toMap(TaskLogFieldDTO::getName, TaskLogFieldDTO::getValue))).collect(Collectors.toList());
jobLogMessage.setMessage(JsonUtil.toJsonString(messageMapList));
jobLogMessageList.add(jobLogMessage); jobLogMessageList.add(jobLogMessage);
} }
// 批量新增日志数据 // 批量新增日志数据
jobLogMessageMapper.batchInsert(jobLogMessageList); jobLogMessageMapper.batchInsert(jobLogMessageList);
LogUtils.info(log, "Begin Handler Log Report Data. <|>{}<|>", logTaskDTOMap);
return JsonUtil.toJsonString(new NettyResult(StatusEnum.YES.getStatus(), "Batch Log Retry Data Upload Processed Successfully", Boolean.TRUE, retryRequest.getReqId())); return JsonUtil.toJsonString(new NettyResult(StatusEnum.YES.getStatus(), "Batch Log Retry Data Upload Processed Successfully", Boolean.TRUE, retryRequest.getReqId()));
} }
} }