优化 error-code 加载逻辑,失败不影响启动

This commit is contained in:
YunaiV 2023-11-25 22:58:58 +08:00
parent 6be49dae3a
commit f7a96d5aa0
2 changed files with 28 additions and 18 deletions

View File

@ -49,8 +49,12 @@ public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size()); log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size());
// 第二步写入到 system 服务 // 第二步写入到 system 服务
errorCodeApi.autoGenerateErrorCodeList(autoGenerateDTOs).checkError(); try {
log.info("[execute][写入到 system 组件完成]"); errorCodeApi.autoGenerateErrorCodeList(autoGenerateDTOs).checkError();
log.info("[execute][写入到 system 组件完成]");
} catch (Exception ex) {
log.error("[execute][写入到 system 组件失败({})]", ExceptionUtil.getRootCauseMessage(ex));
}
} }
/** /**

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.framework.errorcode.core.loader; package cn.iocoder.yudao.framework.errorcode.core.loader;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.module.system.api.errorcode.ErrorCodeApi; import cn.iocoder.yudao.module.system.api.errorcode.ErrorCodeApi;
import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO; import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO;
@ -44,33 +45,38 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
*/ */
private LocalDateTime maxUpdateTime; private LocalDateTime maxUpdateTime;
@Override
@EventListener(ApplicationReadyEvent.class) @EventListener(ApplicationReadyEvent.class)
@Async // 异步保证项目的启动过程毕竟非关键流程 @Async // 异步保证项目的启动过程毕竟非关键流程
public void loadErrorCodes() { public void loadErrorCodes() {
this.loadErrorCodes0(); loadErrorCodes0();
} }
@Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
@Override @Override
@Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
public void refreshErrorCodes() { public void refreshErrorCodes() {
this.loadErrorCodes0(); loadErrorCodes0();
} }
private void loadErrorCodes0() { private void loadErrorCodes0() {
// 加载错误码 try {
List<ErrorCodeRespDTO> errorCodeRespDTOs = errorCodeApi.getErrorCodeList(applicationName, maxUpdateTime).getCheckedData(); // 加载错误码
if (CollUtil.isEmpty(errorCodeRespDTOs)) { List<ErrorCodeRespDTO> errorCodeRespDTOs = errorCodeApi.getErrorCodeList(applicationName, maxUpdateTime).getCheckedData();
return; if (CollUtil.isEmpty(errorCodeRespDTOs)) {
} return;
log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size()); }
log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size());
// 刷新错误码的缓存 // 刷新错误码的缓存
errorCodeRespDTOs.forEach(errorCodeRespDTO -> { errorCodeRespDTOs.forEach(errorCodeRespDTO -> {
// 写入到错误码的缓存 // 写入到错误码的缓存
putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage()); putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage());
// 记录下更新时间方便增量更新 // 记录下更新时间方便增量更新
maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime()); maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
}); });
} catch (Exception ex) {
log.error("[loadErrorCodes0][加载错误码失败({})]", ExceptionUtil.getRootCauseMessage(ex));
}
} }
} }