启动成功
This commit is contained in:
@@ -12,15 +12,15 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
@EnableScheduling // 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码
|
||||
public class ErrorCodeAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public ErrorCodeAutoGenerator errorCodeAutoGenerator(ErrorCodeProperties errorCodeProperties) {
|
||||
return new ErrorCodeAutoGenerator(errorCodeProperties.getGroup())
|
||||
.setErrorCodeConstantsClass(errorCodeProperties.getConstantsClass());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ErrorCodeRemoteLoader errorCodeRemoteLoader(ErrorCodeProperties errorCodeProperties) {
|
||||
return new ErrorCodeRemoteLoader(errorCodeProperties.getGroup());
|
||||
}
|
||||
// @Bean
|
||||
// public ErrorCodeAutoGenerator errorCodeAutoGenerator(ErrorCodeProperties errorCodeProperties) {
|
||||
// return new ErrorCodeAutoGenerator(errorCodeProperties.getGroup())
|
||||
// .setErrorCodeConstantsClass(errorCodeProperties.getConstantsClass());
|
||||
// }
|
||||
//
|
||||
// @Bean
|
||||
// public ErrorCodeRemoteLoader errorCodeRemoteLoader(ErrorCodeProperties errorCodeProperties) {
|
||||
// return new ErrorCodeRemoteLoader(errorCodeProperties.getGroup());
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -17,68 +17,68 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ErrorCodeAutoGenerator {
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(ErrorCodeAutoGenerator.class);
|
||||
|
||||
/**
|
||||
* 应用分组
|
||||
*/
|
||||
private final String group;
|
||||
/**
|
||||
* 错误码枚举类
|
||||
*/
|
||||
private String errorCodeConstantsClass;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ErrorCodeFeign errorCodeFeign;
|
||||
public ErrorCodeAutoGenerator(String group) {
|
||||
this.group = group;
|
||||
}
|
||||
|
||||
public ErrorCodeAutoGenerator setErrorCodeConstantsClass(String errorCodeConstantsClass) {
|
||||
this.errorCodeConstantsClass = errorCodeConstantsClass;
|
||||
return this;
|
||||
}
|
||||
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
@Async // 异步,保证项目的启动过程,毕竟非关键流程
|
||||
public void execute() {
|
||||
// 校验 errorCodeConstantsClass 参数
|
||||
if (!StringUtils.hasText(errorCodeConstantsClass)) {
|
||||
logger.info("[execute][未配置 mall.error-code.constants-class 配置项,不进行自动写入到 system-service 服务]");
|
||||
return;
|
||||
}
|
||||
Class errorCodeConstantsClazz;
|
||||
try {
|
||||
errorCodeConstantsClazz = Class.forName(errorCodeConstantsClass);
|
||||
} catch (ClassNotFoundException e) {
|
||||
logger.error("[execute][配置的 ({}) 找不到对应的类]", errorCodeConstantsClass);
|
||||
return;
|
||||
}
|
||||
// 写入 system-service 服务
|
||||
logger.info("[execute][自动将 ({}) 类的错误码,准备写入到 system-service 服务]", errorCodeConstantsClass);
|
||||
List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs = new ArrayList<>();
|
||||
Arrays.stream(errorCodeConstantsClazz.getFields()).forEach(field -> {
|
||||
if (field.getType() != ErrorCode.class) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// TODO 芋艿:校验是否重复了;
|
||||
ErrorCode errorCode = (ErrorCode) field.get(errorCodeConstantsClazz);
|
||||
autoGenerateDTOs.add(new ErrorCodeAutoGenerateDTO().setGroup(group)
|
||||
.setCode(errorCode.getCode()).setMessage(errorCode.getMessage()));
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
CommonResult<Boolean> autoGenerateErrorCodesResult = errorCodeFeign.autoGenerateErrorCodes(autoGenerateDTOs);
|
||||
if (autoGenerateErrorCodesResult.isSuccess()) {
|
||||
logger.info("[execute][自动将 ({}) 类的错误码,成功写入到 system-service 服务]", errorCodeConstantsClass);
|
||||
} else {
|
||||
logger.error("[execute][自动将 ({}) 类的错误码,失败写入到 system-service 服务,原因为 ({}/{}/{})]", errorCodeConstantsClass,
|
||||
autoGenerateErrorCodesResult.getCode(), autoGenerateErrorCodesResult.getMessage(), autoGenerateErrorCodesResult.getDetailMessage());
|
||||
}
|
||||
}
|
||||
//
|
||||
// private Logger logger = LoggerFactory.getLogger(ErrorCodeAutoGenerator.class);
|
||||
//
|
||||
// /**
|
||||
// * 应用分组
|
||||
// */
|
||||
// private final String group;
|
||||
// /**
|
||||
// * 错误码枚举类
|
||||
// */
|
||||
// private String errorCodeConstantsClass;
|
||||
//
|
||||
//
|
||||
// @Autowired
|
||||
// private ErrorCodeFeign errorCodeFeign;
|
||||
// public ErrorCodeAutoGenerator(String group) {
|
||||
// this.group = group;
|
||||
// }
|
||||
//
|
||||
// public ErrorCodeAutoGenerator setErrorCodeConstantsClass(String errorCodeConstantsClass) {
|
||||
// this.errorCodeConstantsClass = errorCodeConstantsClass;
|
||||
// return this;
|
||||
// }
|
||||
//
|
||||
// @EventListener(ApplicationReadyEvent.class)
|
||||
// @Async // 异步,保证项目的启动过程,毕竟非关键流程
|
||||
// public void execute() {
|
||||
// // 校验 errorCodeConstantsClass 参数
|
||||
// if (!StringUtils.hasText(errorCodeConstantsClass)) {
|
||||
// logger.info("[execute][未配置 mall.error-code.constants-class 配置项,不进行自动写入到 system-service 服务]");
|
||||
// return;
|
||||
// }
|
||||
// Class errorCodeConstantsClazz;
|
||||
// try {
|
||||
// errorCodeConstantsClazz = Class.forName(errorCodeConstantsClass);
|
||||
// } catch (ClassNotFoundException e) {
|
||||
// logger.error("[execute][配置的 ({}) 找不到对应的类]", errorCodeConstantsClass);
|
||||
// return;
|
||||
// }
|
||||
// // 写入 system-service 服务
|
||||
// logger.info("[execute][自动将 ({}) 类的错误码,准备写入到 system-service 服务]", errorCodeConstantsClass);
|
||||
// List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs = new ArrayList<>();
|
||||
// Arrays.stream(errorCodeConstantsClazz.getFields()).forEach(field -> {
|
||||
// if (field.getType() != ErrorCode.class) {
|
||||
// return;
|
||||
// }
|
||||
// try {
|
||||
// // TODO 芋艿:校验是否重复了;
|
||||
// ErrorCode errorCode = (ErrorCode) field.get(errorCodeConstantsClazz);
|
||||
// autoGenerateDTOs.add(new ErrorCodeAutoGenerateDTO().setGroup(group)
|
||||
// .setCode(errorCode.getCode()).setMessage(errorCode.getMessage()));
|
||||
// } catch (IllegalAccessException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// });
|
||||
// CommonResult<Boolean> autoGenerateErrorCodesResult = errorCodeFeign.autoGenerateErrorCodes(autoGenerateDTOs);
|
||||
// if (autoGenerateErrorCodesResult.isSuccess()) {
|
||||
// logger.info("[execute][自动将 ({}) 类的错误码,成功写入到 system-service 服务]", errorCodeConstantsClass);
|
||||
// } else {
|
||||
// logger.error("[execute][自动将 ({}) 类的错误码,失败写入到 system-service 服务,原因为 ({}/{}/{})]", errorCodeConstantsClass,
|
||||
// autoGenerateErrorCodesResult.getCode(), autoGenerateErrorCodesResult.getMessage(), autoGenerateErrorCodesResult.getDetailMessage());
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -17,54 +17,54 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class ErrorCodeRemoteLoader {
|
||||
|
||||
private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000;
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(ErrorCodeRemoteLoader.class);
|
||||
|
||||
/**
|
||||
* 应用分组
|
||||
*/
|
||||
private final String group;
|
||||
|
||||
@Autowired
|
||||
private ErrorCodeFeign errorCodeFeign;
|
||||
private Date maxUpdateTime;
|
||||
|
||||
public ErrorCodeRemoteLoader(String group) {
|
||||
this.group = group;
|
||||
}
|
||||
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
public void loadErrorCodes() {
|
||||
// 从 errorCodeFeign 全量加载 ErrorCode 错误码
|
||||
CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, null);
|
||||
listErrorCodesResult.checkError();
|
||||
logger.info("[loadErrorCodes][从 group({}) 全量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
|
||||
// 写入到 ServiceExceptionUtil 到
|
||||
listErrorCodesResult.getData().forEach(errorCodeVO -> {
|
||||
ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
|
||||
// 记录下更新时间,方便增量更新
|
||||
maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
|
||||
});
|
||||
}
|
||||
|
||||
@Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
|
||||
public void refreshErrorCodes() {
|
||||
// 从 errorCodeFeign 增量加载 ErrorCode 错误码
|
||||
// TODO 优化点:假设删除错误码的配置,会存在问题;
|
||||
CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, maxUpdateTime);
|
||||
listErrorCodesResult.checkError();
|
||||
if (CollectionUtils.isEmpty(listErrorCodesResult.getData())) {
|
||||
return;
|
||||
}
|
||||
logger.info("[refreshErrorCodes][从 group({}) 增量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
|
||||
// 写入到 ServiceExceptionUtil 到
|
||||
listErrorCodesResult.getData().forEach(errorCodeVO -> {
|
||||
ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
|
||||
// 记录下更新时间,方便增量更新
|
||||
maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
|
||||
});
|
||||
}
|
||||
//
|
||||
// private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000;
|
||||
//
|
||||
// private Logger logger = LoggerFactory.getLogger(ErrorCodeRemoteLoader.class);
|
||||
//
|
||||
// /**
|
||||
// * 应用分组
|
||||
// */
|
||||
// private final String group;
|
||||
//
|
||||
// @Autowired
|
||||
// private ErrorCodeFeign errorCodeFeign;
|
||||
// private Date maxUpdateTime;
|
||||
//
|
||||
// public ErrorCodeRemoteLoader(String group) {
|
||||
// this.group = group;
|
||||
// }
|
||||
//
|
||||
// @EventListener(ApplicationReadyEvent.class)
|
||||
// public void loadErrorCodes() {
|
||||
// // 从 errorCodeFeign 全量加载 ErrorCode 错误码
|
||||
// CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, null);
|
||||
// listErrorCodesResult.checkError();
|
||||
// logger.info("[loadErrorCodes][从 group({}) 全量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
|
||||
// // 写入到 ServiceExceptionUtil 到
|
||||
// listErrorCodesResult.getData().forEach(errorCodeVO -> {
|
||||
// ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
|
||||
// // 记录下更新时间,方便增量更新
|
||||
// maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
|
||||
// public void refreshErrorCodes() {
|
||||
// // 从 errorCodeFeign 增量加载 ErrorCode 错误码
|
||||
// // TODO 优化点:假设删除错误码的配置,会存在问题;
|
||||
// CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, maxUpdateTime);
|
||||
// listErrorCodesResult.checkError();
|
||||
// if (CollectionUtils.isEmpty(listErrorCodesResult.getData())) {
|
||||
// return;
|
||||
// }
|
||||
// logger.info("[refreshErrorCodes][从 group({}) 增量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
|
||||
// // 写入到 ServiceExceptionUtil 到
|
||||
// listErrorCodesResult.getData().forEach(errorCodeVO -> {
|
||||
// ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
|
||||
// // 记录下更新时间,方便增量更新
|
||||
// maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
|
||||
// });
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user