From 94bc7f4d786de4e4c206e257c54a43cf3d044aa0 Mon Sep 17 00:00:00 2001 From: "SGK\\17962" <1796293269@qq.com> Date: Sun, 8 Jun 2025 00:21:36 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4=202?= =?UTF-8?q?=E3=80=81=E5=BC=82=E5=B8=B8=E5=91=8A=E8=AD=A6=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E8=81=94=E7=B3=BB=E4=BA=BA=E9=82=AE=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/sql/snail_job_mysql.sql | 3 +- .../datasource/persistence/po/Job.java | 5 ++++ .../support/dispatch/JobExecutorActor.java | 1 + .../src/main/resources/application.yml | 28 +++++++++++++++++++ .../web/model/response/JobResponseVO.java | 5 ++++ .../web/service/convert/JobConverter.java | 19 +++++++++---- .../convert/JobResponseVOConverter.java | 6 ++-- 7 files changed, 58 insertions(+), 9 deletions(-) diff --git a/doc/sql/snail_job_mysql.sql b/doc/sql/snail_job_mysql.sql index 571e5a030..e65dd348a 100644 --- a/doc/sql/snail_job_mysql.sql +++ b/doc/sql/snail_job_mysql.sql @@ -311,7 +311,8 @@ CREATE TABLE `sj_job` `trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间', `trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长', `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复', - `executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒', + `executor_timeout_front` int(11) NOT NULL DEFAULT 60 COMMENT '(front)任务执行超时时间,单位秒', + `executor_timeout` int(11) NOT NULL DEFAULT 60 COMMENT '任务执行超时时间,单位秒', `max_retry_times` int(11) NOT NULL DEFAULT 0 COMMENT '最大重试次数', `parallel_num` int(11) NOT NULL DEFAULT 1 COMMENT '并行数', `retry_interval` int(11) NOT NULL DEFAULT 0 COMMENT '重试间隔(s)', diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/Job.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/Job.java index 541db7d59..f1301a56d 100644 --- a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/Job.java +++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/Job.java @@ -102,6 +102,11 @@ public class Job extends CreateUpdateDt { */ private Integer executorTimeout; + /** + * 前端设置的任务执行超时时间,单位秒 + */ + private Integer executorTimeoutFront; + /** * 最大重试次数 */ diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java index b9e694c4e..a56875bc6 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java @@ -50,6 +50,7 @@ import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionTemplate; +import scala.Int; import java.text.MessageFormat; import java.time.Duration; diff --git a/snail-job-server/snail-job-server-starter/src/main/resources/application.yml b/snail-job-server/snail-job-server-starter/src/main/resources/application.yml index 9ef73e0e5..5444e8601 100644 --- a/snail-job-server/snail-job-server-starter/src/main/resources/application.yml +++ b/snail-job-server/snail-job-server-starter/src/main/resources/application.yml @@ -4,6 +4,18 @@ server: context-path: /snail-job spring: +# mail: +# host: smtp.qq.com +# port: 465 +# username: nianqing_16@qq.com +# password: yojeelyaxrvacihg +# protocol: smtp +# ssl: +# enable: true +# properties: +# mail.smtp.auth: true +# mail.smtp.starttls.enable: true + main: banner-mode: off profiles: @@ -82,3 +94,19 @@ snail-job: server-port: 17888 # 服务器端口 log-storage: 7 # 日志保存时间(单位: day) rpc-type: grpc + + mail: + enabled: true + host: smtp.qq.com + port: 465 + user: nianqing_16@qq.com + pass: yojeelyaxrvacihg + from: nianqing_16@qq.com + sslEnable: true + starttlsEnable: false + timeout: 5000 + connectionTimeout: 5000 + properties: + mail.smtp.auth: true + auth: true + diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobResponseVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobResponseVO.java index 72c771217..db9e105dd 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobResponseVO.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobResponseVO.java @@ -85,6 +85,11 @@ public class JobResponseVO { */ private Integer executorTimeout; + /** + * 前置任务执行超时时间,单位秒 + */ + private Integer executorTimeoutFront; + /** * 最大重试次数 */ diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobConverter.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobConverter.java index 0a4720726..dbee2566c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobConverter.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobConverter.java @@ -24,18 +24,24 @@ public interface JobConverter { JobConverter INSTANCE = Mappers.getMapper(JobConverter.class); + @Mappings({ + @Mapping(source = "executorTimeoutFront", target = "executorTimeout") + }) List convertList(List jobs); @Mappings({ - @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))") - }) - JobRequestVO convert(Job job); - - @Mappings({ - @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIdsStr(jobRequestVO.getNotifyIds()))") + @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIdsStr(jobRequestVO.getNotifyIds()))"), + @Mapping(source = "executorTimeout", target = "executorTimeoutFront"), + @Mapping(target = "executorTimeout", expression = "java( (jobRequestVO.getExecutorTimeout() != null&&jobRequestVO.getExecutorTimeout() <= 0) ? Integer.MAX_VALUE : jobRequestVO.getExecutorTimeout())") }) Job convert(JobRequestVO jobRequestVO); + @Mappings({ + @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))"), + @Mapping(source = "executorTimeoutFront", target = "executorTimeout") + }) + JobRequestVO convert(Job job); + static Set toNotifyIds(String notifyIds) { if (StrUtil.isBlank(notifyIds)) { return new HashSet<>(); @@ -51,4 +57,5 @@ public interface JobConverter { return JsonUtil.toJsonString(notifyIds); } + } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobResponseVOConverter.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobResponseVOConverter.java index 186493b02..82465db37 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobResponseVOConverter.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/JobResponseVOConverter.java @@ -23,13 +23,15 @@ public interface JobResponseVOConverter { JobResponseVOConverter INSTANCE = Mappers.getMapper(JobResponseVOConverter.class); @Mappings({ - @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))") + @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))"), + @Mapping(source = "executorTimeoutFront", target = "executorTimeout") }) List convertList(List jobs); @Mappings({ @Mapping(target = "nextTriggerAt", expression = "java(JobResponseVOConverter.toLocalDateTime(job.getNextTriggerAt()))"), - @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))") + @Mapping(target = "notifyIds", expression = "java(JobConverter.toNotifyIds(job.getNotifyIds()))"), + @Mapping(source = "executorTimeoutFront", target = "executorTimeout") }) JobResponseVO convert(Job job);