feat: 1.5.0

1. 优化状态的显示
2. 页面新增数据类型展示
3. 迁移了部分枚举到服务端模块
This commit is contained in:
www.byteblogs.com 2023-06-05 23:49:59 +08:00
parent 78abf3fa1e
commit 7c6eb9ebdf
33 changed files with 166 additions and 80 deletions

View File

@ -1,24 +0,0 @@
package com.aizuda.easy.retry.common.core.enums;
import lombok.Getter;
/**
* 存储类型
*
* @author: www.byteblogs.com
* @date : 2021-11-26 18:01
*/
@Getter
public enum StorageTypeEnum {
MYSQL(1),
REDIS(2);
private final Integer type;
StorageTypeEnum(int type) {
this.type = type;
}
}

View File

@ -1,6 +1,5 @@
package com.aizuda.easy.retry.common.core.enums;
package com.aizuda.easy.retry.server.enums;
import com.aizuda.easy.retry.common.core.exception.EasyRetryCommonException;
import lombok.Getter;
import java.time.temporal.ChronoUnit;

View File

@ -1,4 +1,4 @@
package com.aizuda.easy.retry.common.core.enums;
package com.aizuda.easy.retry.server.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.aizuda.easy.retry.common.core.enums;
package com.aizuda.easy.retry.server.enums;
import lombok.Getter;

View File

@ -4,7 +4,7 @@ import com.aizuda.easy.retry.server.persistence.mybatis.po.GroupConfig;
import com.aizuda.easy.retry.server.persistence.mybatis.po.NotifyConfig;
import com.aizuda.easy.retry.server.persistence.mybatis.po.SceneConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.server.enums.StatusEnum;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

View File

@ -1,9 +1,9 @@
package com.aizuda.easy.retry.server.persistence.support.access.retry;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskMapper;

View File

@ -3,7 +3,7 @@ package com.aizuda.easy.retry.server.server.handler;
import cn.hutool.core.net.url.UrlQuery;
import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO;
import com.aizuda.easy.retry.server.service.RetryService;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.server.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.common.core.model.NettyResult;
import com.aizuda.easy.retry.common.core.model.EasyRetryRequest;

View File

@ -2,7 +2,7 @@ package com.aizuda.easy.retry.server.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.HashUtil;
import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.GroupConfigMapper;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.NotifyConfigMapper;

View File

@ -1,8 +1,8 @@
package com.aizuda.easy.retry.server.service.impl;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.common.core.enums.DelayLevelEnum;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.server.enums.DelayLevelEnum;
import com.aizuda.easy.retry.server.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO;
@ -119,7 +119,7 @@ public class RetryServiceImpl implements RetryService {
* 若配置了默认初始化场景配置则发现上报数据的时候未配置场景默认生成一个场景
* backOff(退避策略): 等级策略
* maxRetryCount(最大重试次数): 26
* triggerInterval(间隔时间): see: {@link com.aizuda.easy.retry.common.core.enums.DelayLevelEnum}
* triggerInterval(间隔时间): see: {@link DelayLevelEnum}
*
* @param retryTaskDTO 重试上报DTO
*/

View File

@ -49,7 +49,7 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
retryTaskLogLambdaQueryWrapper.select(RetryTaskLog::getGroupName, RetryTaskLog::getId, RetryTaskLog::getSceneName,
RetryTaskLog::getIdempotentId, RetryTaskLog::getBizNo, RetryTaskLog::getErrorMessage, RetryTaskLog::getRetryStatus,
RetryTaskLog::getCreateDt, RetryTaskLog::getUniqueId);
RetryTaskLog::getCreateDt, RetryTaskLog::getUniqueId, RetryTaskLog::getTaskType);
PageDTO<RetryTaskLog> retryTaskLogPageDTO = retryTaskLogMapper.selectPage(pageDTO, retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLog::getCreateDt));
return new PageResult<>(

View File

@ -9,6 +9,7 @@ import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskMapper;
import com.aizuda.easy.retry.server.persistence.mybatis.po.GroupConfig;
import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTask;
import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTaskLog;
import com.aizuda.easy.retry.server.persistence.mybatis.po.ServerNode;
import com.aizuda.easy.retry.server.persistence.support.ConfigAccess;
import com.aizuda.easy.retry.server.service.RetryTaskService;
@ -98,7 +99,7 @@ public class RetryTaskServiceImpl implements RetryTaskService {
retryTaskLambdaQueryWrapper.select(RetryTask::getId, RetryTask::getBizNo, RetryTask::getIdempotentId,
RetryTask::getGroupName, RetryTask::getNextTriggerAt, RetryTask::getRetryCount,
RetryTask::getRetryStatus, RetryTask::getUpdateDt, RetryTask::getSceneName, RetryTask::getUniqueId);
RetryTask::getRetryStatus, RetryTask::getUpdateDt, RetryTask::getSceneName, RetryTask::getUniqueId, RetryTask::getTaskType);
pageDTO = retryTaskMapper.selectPage(pageDTO, retryTaskLambdaQueryWrapper.orderByDesc(RetryTask::getCreateDt));
return new PageResult<>(pageDTO, RetryTaskResponseVOConverter.INSTANCE.toRetryTaskResponseVO(pageDTO.getRecords()));
}

View File

@ -2,7 +2,7 @@ package com.aizuda.easy.retry.server.support.allocate.client;
import com.aizuda.easy.retry.server.support.allocate.common.ConsistentHashRouter;
import com.aizuda.easy.retry.server.support.allocate.common.Node;
import com.aizuda.easy.retry.common.core.enums.AllocationAlgorithmEnum;
import com.aizuda.easy.retry.server.enums.AllocationAlgorithmEnum;
import com.aizuda.easy.retry.server.support.ClientLoadBalance;
import java.util.ArrayList;

View File

@ -1,6 +1,6 @@
package com.aizuda.easy.retry.server.support.allocate.client;
import com.aizuda.easy.retry.common.core.enums.AllocationAlgorithmEnum;
import com.aizuda.easy.retry.server.enums.AllocationAlgorithmEnum;
import com.aizuda.easy.retry.server.support.ClientLoadBalance;
import org.springframework.stereotype.Component;

View File

@ -3,8 +3,11 @@ package com.aizuda.easy.retry.server.support.dispatch;
import lombok.Data;
/**
* 扫描任务模型
*
* @author: ww.byteblogs.com
* @date : 2023-06-05 16:30
* @since 1.5.0
*/
@Data
public class ScanTaskDTO {

View File

@ -2,11 +2,10 @@ package com.aizuda.easy.retry.server.support.dispatch.actor.exec;
import akka.actor.AbstractActor;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.client.model.DispatchRetryDTO;
import com.aizuda.easy.retry.client.model.DispatchRetryResultDTO;
import com.aizuda.easy.retry.client.model.RetryCallbackDTO;
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.server.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.common.core.model.EasyRetryHeaders;
import com.aizuda.easy.retry.common.core.model.Result;
@ -19,7 +18,6 @@ import com.aizuda.easy.retry.server.persistence.mybatis.po.ServerNode;
import com.aizuda.easy.retry.server.service.convert.RetryTaskLogConverter;
import com.aizuda.easy.retry.server.support.IdempotentStrategy;
import com.aizuda.easy.retry.server.support.context.CallbackRetryContext;
import com.aizuda.easy.retry.server.support.context.MaxAttemptsPersistenceRetryContext;
import com.aizuda.easy.retry.server.support.retry.RetryExecutor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

View File

@ -3,11 +3,11 @@ package com.aizuda.easy.retry.server.support.dispatch.actor.result;
import akka.actor.AbstractActor;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.aizuda.easy.retry.server.enums.TaskTypeEnum;
import com.aizuda.easy.retry.server.support.handler.CallbackRetryTaskHandler;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskLogMapper;

View File

@ -2,11 +2,11 @@ package com.aizuda.easy.retry.server.support.dispatch.actor.result;
import akka.actor.AbstractActor;
import cn.hutool.core.lang.Assert;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.aizuda.easy.retry.server.enums.TaskTypeEnum;
import com.aizuda.easy.retry.server.support.handler.CallbackRetryTaskHandler;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.server.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.RetryTaskLogMapper;

View File

@ -1,6 +1,6 @@
package com.aizuda.easy.retry.server.support.generator.id;
import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.enums.IdGeneratorMode;
import com.aizuda.easy.retry.common.core.log.LogUtils;
import com.aizuda.easy.retry.server.persistence.mybatis.mapper.SequenceAllocMapper;
import com.aizuda.easy.retry.server.persistence.mybatis.po.SequenceAlloc;

View File

@ -2,7 +2,7 @@ package com.aizuda.easy.retry.server.support.generator.id;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.support.generator.IdGenerator;
import org.springframework.stereotype.Component;

View File

@ -2,7 +2,7 @@ package com.aizuda.easy.retry.server.support.strategy;
import com.aizuda.easy.retry.client.model.DispatchRetryResultDTO;
import com.aizuda.easy.retry.common.core.enums.RetryResultStatusEnum;
import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.server.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.model.Result;
import com.aizuda.easy.retry.server.support.RetryContext;
import com.aizuda.easy.retry.server.support.StopStrategy;

View File

@ -7,7 +7,7 @@ import com.aizuda.easy.retry.server.persistence.mybatis.po.RetryTask;
import com.aizuda.easy.retry.server.persistence.mybatis.po.SceneConfig;
import com.aizuda.easy.retry.server.persistence.support.ConfigAccess;
import com.aizuda.easy.retry.common.core.context.SpringContext;
import com.aizuda.easy.retry.common.core.enums.DelayLevelEnum;
import com.aizuda.easy.retry.server.enums.DelayLevelEnum;
import com.aizuda.easy.retry.common.core.util.CronExpression;
import com.google.common.base.Preconditions;
import com.aizuda.easy.retry.server.support.RetryContext;

View File

@ -1,6 +1,5 @@
package com.aizuda.easy.retry.server.web.model.request;
import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

View File

@ -1,6 +1,6 @@
package com.aizuda.easy.retry.server.web.model.request;
import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode;
import com.aizuda.easy.retry.server.enums.IdGeneratorMode;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

View File

@ -27,6 +27,8 @@ public class RetryDeadLetterResponseVO {
private String extAttrs;
private Integer taskType;
private LocalDateTime createDt;
}

View File

@ -33,6 +33,8 @@ public class RetryTaskLogResponseVO {
private Integer retryStatus;
private Integer taskType;
private String errorMessage;
private LocalDateTime createDt;

View File

@ -36,6 +36,8 @@ public class RetryTaskResponseVO {
private Integer retryStatus;
private Integer taskType;
private LocalDateTime createDt;
private LocalDateTime updateDt;

View File

@ -1,5 +1,5 @@
server:
port: 8089
port: 8088
spring:
profiles:
active: dev

View File

@ -56,6 +56,11 @@
<span slot="serial" slot-scope="text, record">
{{ record.id }}
</span>
<span slot="taskType" slot-scope="text">
<a-tag :color="taskType[text].color">
{{ taskType[text].name }}
</a-tag>
</span>
<span slot="action" slot-scope="text, record">
<template>
<a-popconfirm
@ -118,6 +123,16 @@ export default {
advanced: false,
//
queryParam: {},
taskType: {
'1': {
'name': '重试数据',
'color': '#d06892'
},
'2': {
'name': '回调数据',
'color': '#f5a22d'
}
},
//
columns: [
{
@ -145,6 +160,12 @@ export default {
dataIndex: 'bizNo',
ellipsis: true
},
{
title: '任务类型',
dataIndex: 'taskType',
scopedSlots: { customRender: 'taskType' },
width: '5%'
},
{
title: '创建时间',
dataIndex: 'createDt',

View File

@ -27,7 +27,9 @@
{{ parseDate( retryInfo.createDt) }}
</a-descriptions-item>
<a-descriptions-item label="当前重试状态">
{{ retryStatus[retryInfo.retryStatus] }}
<a-tag color="red">
{{ retryStatus[retryInfo.retryStatus] }}
</a-tag>
</a-descriptions-item>
<a-descriptions-item label="执行器名称" :span="3">
{{ retryInfo.executorName }}
@ -56,8 +58,8 @@ export default {
return {
retryInfo: {},
retryStatus: {
'0': '重试中',
'1': '重试完成',
'0': '处理中',
'1': '处理成功',
'2': '最大次数'
}
}

View File

@ -56,6 +56,16 @@
<span slot="serial" slot-scope="text, record, index">
{{ index + 1 }}
</span>
<span slot="taskType" slot-scope="text">
<a-tag :color="taskType[text].color">
{{ taskType[text].name }}
</a-tag>
</span>
<span slot="retryStatus" slot-scope="text">
<a-tag :color="retryStatus[text].color">
{{ retryStatus[text].name }}
</a-tag>
</span>
<span slot="action" slot-scope="text, record">
<template>
<a @click="handleInfo(record)">详情</a>
@ -86,14 +96,6 @@ export default {
type: Boolean,
default: true
}
// groupName: {
// type: String,
// default: ''
// },
// uniqueId: {
// type: String,
// default: ''
// }
},
data () {
return {
@ -104,9 +106,28 @@ export default {
//
queryParam: {},
retryStatus: {
'0': '重试中',
'1': '重试完成',
'2': '最大次数'
'0': {
'name': '处理中',
'color': '#9c1f1f'
},
'1': {
'name': '处理成功',
'color': '#f5a22d'
},
'2': {
'name': '最大次数',
'color': '#68a5d0'
}
},
taskType: {
'1': {
'name': '重试数据',
'color': '#d06892'
},
'2': {
'name': '回调数据',
'color': '#f5522d'
}
},
//
columns: [
@ -146,13 +167,19 @@ export default {
{
title: '重试状态',
dataIndex: 'retryStatus',
customRender: (text) => this.retryStatus[text],
scopedSlots: { customRender: 'retryStatus' },
width: '5%'
},
{
title: '任务类型',
dataIndex: 'taskType',
scopedSlots: { customRender: 'taskType' },
width: '5%'
},
{
title: '失败原因',
dataIndex: 'errorMessage',
width: '25%'
width: '15%'
},
{
title: '触发时间',

View File

@ -1,6 +1,6 @@
<template>
<div>
<page-header-wrapper @back="() => $router.go(-1)" style='margin: -24px -1px 0'>
<page-header-wrapper @back="() => $router.go(-1)" style="margin: -24px -1px 0">
<div></div>
</page-header-wrapper>
<a-card :bordered="false">
@ -23,8 +23,14 @@
<a-descriptions-item label="重试次数">
{{ retryTaskInfo.retryCount }}
</a-descriptions-item>
<a-descriptions-item label="重试状态">
{{ retryStatus[retryTaskInfo.retryStatus] }}
<a-descriptions-item label="重试状态 | 数据类型">
<a-tag color="red">
{{ retryStatus[retryTaskInfo.retryStatus] }}
</a-tag>
<a-divider type="vertical" />
<a-tag :color="taskType[retryTaskInfo.taskType].color">
{{ taskType[retryTaskInfo.taskType].name }}
</a-tag>
</a-descriptions-item>
<a-descriptions-item label="触发时间">
{{ retryTaskInfo.createDt }}
@ -43,9 +49,9 @@
</a-descriptions-item>
</a-descriptions>
</a-card>
<div style='margin: 20px'></div>
<div style="margin: 20px"></div>
<a-card title="日志列表" style="width: 100%">
<RetryLogList v-if="retryTaskInfo !== null" ref='retryLogListRef' :showSearch="false" :group-name="retryTaskInfo.groupName" :unique-id="retryTaskInfo.uniqueId"/>
<RetryLogList v-if="retryTaskInfo !== null" ref="retryLogListRef" :showSearch="false" :group-name="retryTaskInfo.groupName" :unique-id="retryTaskInfo.uniqueId"/>
</a-card>
</div>
</template>
@ -64,9 +70,19 @@ export default {
return {
retryTaskInfo: {},
retryStatus: {
'0': '重试中',
'1': '重试完成',
'0': '处理中',
'1': '处理成功',
'2': '最大次数'
},
taskType: {
'1': {
'name': '重试数据',
'color': '#d06892'
},
'2': {
'name': '回调数据',
'color': '#f5a22d'
}
}
}
},

View File

@ -84,6 +84,16 @@
<span slot="serial" slot-scope="text, record">
{{ record.id }}
</span>
<span slot="taskType" slot-scope="text">
<a-tag :color="taskType[text].color">
{{ taskType[text].name }}
</a-tag>
</span>
<span slot="retryStatus" slot-scope="text">
<a-tag :color="retryStatus[text].color">
{{ retryStatus[text].name }}
</a-tag>
</span>
<span slot="action" slot-scope="text, record">
<template>
<a @click="handleInfo(record)">详情</a>
@ -131,10 +141,32 @@ export default {
//
queryParam: {},
retryStatus: {
0: '重试中',
1: '重试完成',
2: '最大次数',
3: '暂停'
'0': {
'name': '处理中',
'color': '#9c1f1f'
},
'1': {
'name': '处理成功',
'color': '#f5a22d'
},
'2': {
'name': '最大次数',
'color': '#68a5d0'
},
'3': {
'name': '暂停',
'color': '#f52d8e'
}
},
taskType: {
'1': {
'name': '重试数据',
'color': '#d06892'
},
'2': {
'name': '回调数据',
'color': '#f5a22d'
}
},
//
columns: [
@ -184,7 +216,13 @@ export default {
{
title: '重试状态',
dataIndex: 'retryStatus',
customRender: (text) => this.retryStatus[text],
scopedSlots: { customRender: 'retryStatus' },
width: '5%'
},
{
title: '任务类型',
dataIndex: 'taskType',
scopedSlots: { customRender: 'taskType' },
width: '5%'
},
{