【功能修复】多租户下定时任务结果处理都为失败问题

pull/141/head
Lcp 2024-09-14 22:10:25 +08:00
parent 85020318db
commit 538b5f5d3c
1 changed files with 9 additions and 5 deletions

View File

@ -42,15 +42,16 @@ public class TenantJobAspect {
}
// 逐个租户,执行 Job
Map<Long, String> results = new ConcurrentHashMap<>();
Map<Long, String> success = new ConcurrentHashMap<>();
Map<Long, String> fail = new ConcurrentHashMap<>();
tenantIds.parallelStream().forEach(tenantId -> {
// TODO 芋艿:先通过 parallel 实现并行1多个租户是一条执行日志2异常的情况
TenantUtils.execute(tenantId, () -> {
try {
Object result = joinPoint.proceed();
results.put(tenantId, StrUtil.toStringOrNull(result));
success.put(tenantId, StrUtil.toStringOrNull(result));
} catch (Throwable e) {
results.put(tenantId, ExceptionUtil.getRootCauseMessage(e));
fail.put(tenantId, ExceptionUtil.getRootCauseMessage(e));
// 打印异常
XxlJobHelper.log(StrUtil.format("[多租户({}) 执行任务({}),发生异常:{}]",
tenantId, joinPoint.getSignature(), ExceptionUtils.getStackTrace(e)));
@ -58,8 +59,11 @@ public class TenantJobAspect {
});
});
// 如果 results 非空,说明发生了异常,标记 XXL-Job 执行失败
if (CollUtil.isNotEmpty(results)) {
XxlJobHelper.handleFail(JsonUtils.toJsonString(results));
if (CollUtil.isNotEmpty(fail)) {
XxlJobHelper.handleFail(JsonUtils.toJsonString(fail));
}
else {
XxlJobHelper.handleSuccess(JsonUtils.toJsonString(success));
}
}