malei05 3 weeks ago
parent
commit
15dd6650a4

+ 11 - 3
src/main/java/net/yyc/quartz/config/QuartzFactory.java

@@ -18,6 +18,7 @@
 package net.yyc.quartz.config;
 
 import cn.hutool.core.util.IdUtil;
+import net.yyc.quartz.constants.JobTypeQuartzEnum;
 import net.yyc.quartz.constants.QuartzEnum;
 import net.yyc.quartz.entity.SysJob;
 import lombok.SneakyThrows;
@@ -47,9 +48,16 @@ public class QuartzFactory implements Job {
 		SysJob sysJob = (SysJob) jobExecutionContext.getMergedJobDataMap()
 				.get(QuartzEnum.SCHEDULE_JOB_KEY.getType());
 		String executionId = IdUtil.fastSimpleUUID();
-		log.info("[QUARTZ] [{}] 任务开始 | jobId={} jobName={} jobGroup={} class={} method={}",
-				executionId, sysJob.getJobId(), sysJob.getJobName(), sysJob.getJobGroup(),
-				sysJob.getClassName(), sysJob.getMethodName());
+		String jobType = sysJob.getJobType();
+		if (JobTypeQuartzEnum.REST.getType().equals(jobType) || JobTypeQuartzEnum.JAR.getType().equals(jobType)) {
+			log.info("[QUARTZ] [{}] 任务开始 | jobId={} jobName={} jobGroup={} type={} url={}",
+					executionId, sysJob.getJobId(), sysJob.getJobName(), sysJob.getJobGroup(),
+					jobType, sysJob.getExecutePath());
+		} else {
+			log.info("[QUARTZ] [{}] 任务开始 | jobId={} jobName={} jobGroup={} type={} class={} method={}",
+					executionId, sysJob.getJobId(), sysJob.getJobName(), sysJob.getJobGroup(),
+					jobType, sysJob.getClassName(), sysJob.getMethodName());
+		}
 		quartzInvokeFactory.init(sysJob, jobExecutionContext.getTrigger(), executionId);
 	}
 

+ 15 - 6
src/main/java/net/yyc/quartz/util/RestTaskInvoke.java

@@ -19,6 +19,7 @@ package net.yyc.quartz.util;
 
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
 import lombok.extern.slf4j.Slf4j;
 import net.yyc.common.core.constant.CommonConstants;
@@ -68,12 +69,20 @@ public class RestTaskInvoke implements ITaskInvok {
                 formData.put("params", methodParams);
                 request.form(formData);
             }
-
-            request.execute();
-            log.debug("REST任务调用完成, url={}, params={}", resolvedUrl, methodParams);
+            HttpResponse response = request.execute();
+            int status = response.getStatus();
+            String body = response.body();
+            if (status >= 200 && status < 300) {
+                log.info("[QUARTZ] REST调用完成 | jobId={} jobName={} url={} status={} result={}",
+                        sysJob.getJobId(), sysJob.getJobName(), resolvedUrl, status, StrUtil.sub(body, 0, 500));
+            } else {
+                log.error("[QUARTZ] REST调用异常 | jobId={} jobName={} url={} status={} result={}",
+                        sysJob.getJobId(), sysJob.getJobName(), resolvedUrl, status, StrUtil.sub(body, 0, 500));
+                throw new TaskException("REST调用返回非2xx状态: " + status + ", url=" + executePath);
+            }
         } catch (Exception e) {
-            log.error("定时任务restTaskInvok异常,执行任务:{}", sysJob.getExecutePath());
-            throw new TaskException("定时任务restTaskInvok业务执行失败,任务:" + sysJob.getExecutePath(),e);
+            log.error("[QUARTZ] REST调用失败 | jobId={} jobName={} url={} error={}", sysJob.getJobId(), sysJob.getJobName(), sysJob.getExecutePath(), e.getMessage(), e);
+            throw new TaskException("REST调用失败, url=" + sysJob.getExecutePath(), e);
         }
     }
 
@@ -108,7 +117,7 @@ public class RestTaskInvoke implements ITaskInvok {
                 return instance.getUri().toString() + servicePath;
             }
         } catch (Exception e) {
-            log.warn("服务名解析失败,使用原路径: {}", executePath, e);
+            log.warn("[QUARTZ] 服务名解析失败, 使用原路径: {}", executePath, e);
         }
 
         // host:port 模式直接返回原路径

+ 73 - 76
src/main/java/net/yyc/quartz/util/TaskInvokeUtil.java

@@ -18,14 +18,14 @@
 package net.yyc.quartz.util;
 
 import cn.hutool.core.util.StrUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import net.yyc.quartz.constants.QuartzEnum;
 import net.yyc.quartz.entity.SysJob;
 import net.yyc.quartz.entity.SysJobLog;
 import net.yyc.quartz.event.SysJobLogEvent;
 import net.yyc.quartz.service.SysJobService;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.annotation.Aspect;
 import org.quartz.CronTrigger;
 import org.quartz.Trigger;
@@ -44,83 +44,80 @@ import java.time.ZoneId;
 @RequiredArgsConstructor
 public class TaskInvokeUtil {
 
-	private final ApplicationEventPublisher publisher;
-
-	@Autowired
-	private SysJobService sysJobService;
+    private final ApplicationEventPublisher publisher;
 
-	@SneakyThrows
-	public void invokeMethod(SysJob sysJob, Trigger trigger, String executionId) {
+    @Autowired
+    private SysJobService sysJobService;
 
-		// 执行开始时间
-		long startTime;
-		// 执行结束时间
-		long endTime;
-		// 获取执行开始时间
-		startTime = System.currentTimeMillis();
-		// 更新定时任务表内的状态、执行时间、上次执行时间、下次执行时间等信息
-		SysJob updateSysjob = new SysJob();
-		updateSysjob.setJobId(sysJob.getJobId());
-		// 日志
-		SysJobLog sysJobLog = new SysJobLog();
-		sysJobLog.setUuid(executionId);
-		sysJobLog.setJobId(sysJob.getJobId());
-		sysJobLog.setJobName(sysJob.getJobName());
-		sysJobLog.setJobGroup(sysJob.getJobGroup());
-		sysJobLog.setJobOrder(sysJob.getJobOrder());
-		sysJobLog.setJobType(sysJob.getJobType());
-		sysJobLog.setExecutePath(sysJob.getExecutePath());
-		sysJobLog.setClassName(sysJob.getClassName());
-		sysJobLog.setMethodName(sysJob.getMethodName());
-		sysJobLog.setMethodParamsValue(sysJob.getMethodParamsValue());
-		sysJobLog.setCronExpression(sysJob.getCronExpression());
-		sysJobLog.setTenantId(sysJob.getTenantId());
-		try {
-			// 执行任务
-			ITaskInvok iTaskInvok = TaskInvokFactory.getInvoker(sysJob.getJobType());
-			// 设置uuid
-			sysJob.setUuid(executionId);
-			// 直接执行任务
-			iTaskInvok.invokMethod(sysJob);
+    @SneakyThrows
+    public void invokeMethod(SysJob sysJob, Trigger trigger, String executionId) {
 
-			// 记录成功状态
-			sysJobLog.setJobMessage(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getDescription());
-			sysJobLog.setJobLogStatus(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType());
-			// 任务表信息更新
-			updateSysjob.setJobExecuteStatus(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType());
-		}
-		catch (Throwable e) {
-			log.error("[QUARTZ] [{}] 任务失败 | jobId={} jobName={} error={}",
-					executionId, sysJob.getJobId(), sysJob.getJobName(), e.getMessage(), e);
-			// 记录失败状态
-			sysJobLog.setJobMessage(QuartzEnum.JOB_LOG_STATUS_FAIL.getDescription());
-			sysJobLog.setJobLogStatus(QuartzEnum.JOB_LOG_STATUS_FAIL.getType());
-			sysJobLog.setExceptionInfo(StrUtil.sub(e.getMessage(), 0, 2000));
-			// 任务表信息更新
-			updateSysjob.setJobExecuteStatus(QuartzEnum.JOB_LOG_STATUS_FAIL.getType());
-		}
-		finally {
-			// 记录执行时间 立刻执行使用的是simpleTeigger
-			if (trigger instanceof CronTrigger) {
-				updateSysjob.setStartTime(
-						trigger.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
-				updateSysjob.setPreviousTime(
-						trigger.getPreviousFireTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
-				updateSysjob.setNextTime(
-						trigger.getNextFireTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
-			}
-			// 记录执行时长
-			endTime = System.currentTimeMillis();
-			sysJobLog.setExecuteTime(String.valueOf(endTime - startTime));
+        // 执行开始时间
+        long startTime;
+        // 执行结束时间
+        long endTime;
+        // 获取执行开始时间
+        startTime = System.currentTimeMillis();
+        // 更新定时任务表内的状态、执行时间、上次执行时间、下次执行时间等信息
+        SysJob updateSysjob = new SysJob();
+        updateSysjob.setJobId(sysJob.getJobId());
+        // 日志
+        SysJobLog sysJobLog = new SysJobLog();
+        sysJobLog.setUuid(executionId);
+        sysJobLog.setJobId(sysJob.getJobId());
+        sysJobLog.setJobName(sysJob.getJobName());
+        sysJobLog.setJobGroup(sysJob.getJobGroup());
+        sysJobLog.setJobOrder(sysJob.getJobOrder());
+        sysJobLog.setJobType(sysJob.getJobType());
+        sysJobLog.setExecutePath(sysJob.getExecutePath());
+        sysJobLog.setClassName(sysJob.getClassName());
+        sysJobLog.setMethodName(sysJob.getMethodName());
+        sysJobLog.setMethodParamsValue(sysJob.getMethodParamsValue());
+        sysJobLog.setCronExpression(sysJob.getCronExpression());
+        sysJobLog.setTenantId(sysJob.getTenantId());
+        try {
+            // 执行任务
+            ITaskInvok iTaskInvok = TaskInvokFactory.getInvoker(sysJob.getJobType());
+            // 设置uuid
+            sysJob.setUuid(executionId);
+            // 直接执行任务
+            iTaskInvok.invokMethod(sysJob);
+            // 记录成功状态
+            sysJobLog.setJobMessage(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getDescription());
+            sysJobLog.setJobLogStatus(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType());
+            // 任务表信息更新
+            updateSysjob.setJobExecuteStatus(QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType());
+        } catch (Throwable e) {
+            log.error("[QUARTZ] [{}] 任务失败 | jobId={} jobName={} error={}",
+                    executionId, sysJob.getJobId(), sysJob.getJobName(), e.getMessage(), e);
+            // 记录失败状态
+            sysJobLog.setJobMessage(QuartzEnum.JOB_LOG_STATUS_FAIL.getDescription());
+            sysJobLog.setJobLogStatus(QuartzEnum.JOB_LOG_STATUS_FAIL.getType());
+            sysJobLog.setExceptionInfo(StrUtil.sub(e.getMessage(), 0, 2000));
+            // 任务表信息更新
+            updateSysjob.setJobExecuteStatus(QuartzEnum.JOB_LOG_STATUS_FAIL.getType());
+        } finally {
+            // 记录执行时间 立刻执行使用的是simpleTeigger
+            if (trigger instanceof CronTrigger) {
+                updateSysjob.setStartTime(
+                        trigger.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                updateSysjob.setPreviousTime(
+                        trigger.getPreviousFireTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+                updateSysjob.setNextTime(
+                        trigger.getNextFireTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
+            }
+            // 记录执行时长
+            endTime = System.currentTimeMillis();
+            sysJobLog.setExecuteTime(String.valueOf(endTime - startTime));
 
-			if (QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType().equals(sysJobLog.getJobLogStatus())) {
-				log.info("[QUARTZ] [{}] 任务完成 | jobId={} jobName={} 耗时={}ms",
-						executionId, sysJob.getJobId(), sysJob.getJobName(), endTime - startTime);
-			}
+            if (QuartzEnum.JOB_LOG_STATUS_SUCCESS.getType().equals(sysJobLog.getJobLogStatus())) {
+                log.info("[QUARTZ] [{}] 任务完成 | jobId={} jobName={} 耗时={}ms",
+                        executionId, sysJob.getJobId(), sysJob.getJobName(), endTime - startTime);
+            }
 
-			publisher.publishEvent(new SysJobLogEvent(sysJobLog));
-			sysJobService.updateById(updateSysjob);
-		}
-	}
+            publisher.publishEvent(new SysJobLogEvent(sysJobLog));
+            sysJobService.updateById(updateSysjob);
+        }
+    }
 
 }