Skip to content

超时时间

超时时间的设置,目的是在定时任务到了这个阈值还没有执行完,那么就会调用批次任务线程池的shutDownNow方法。这个和上面说到的覆盖策略很相似。同样也都不能保证任务一定被停止。

客户端代码

java
@Slf4j
@Component
public class TestTimeout extends AbstractJobExecutor {
    @Override
    protected ExecuteResult doJobExecute(JobArgs jobArgs) {
        try {
            // 休眠3分钟
            Thread.sleep(3*60*1000);
        }catch (InterruptedException e){
            return ExecuteResult.failure();
        }
        return ExecuteResult.success();
    }
}

页面配置

配置项配置内容
任务名称测试超时时间
执行器名称com.bjltd.test.TestTimeout
路由策略轮询
阻塞策略丢弃
触发类型固定时间
间隔时长60秒
超时时间30秒

测试结果

客户端日志信息:

shell
2024-09-24 16:53:40 [snail-netty-server-1] INFO  c.a.s.c.job.core.client.JobEndPoint
 - 批次:[1992] 任务调度成功. 
2024-09-24 16:53:40 [snail-job-job-1,992-1] INFO  com.bjltd.test.TestTimeout
 - snail-job-job-1,992-1开始执行任务
2024-09-24 16:53:50 [nioEventLoopGroup-2-1] INFO  c.a.s.c.c.l.report.ReportLogListener
 - Data report log successfully requestId:[7]
2024-09-24 16:54:10 [snail-job-job-1,992-1] INFO  com.bjltd.test.TestTimeout
 - snail-job-job-1,992-1任务被中断
2024-09-24 16:54:40 [snail-netty-server-3] INFO  c.a.s.c.job.core.client.JobEndPoint
 - 批次:[1993] 任务调度成功. 
2024-09-24 16:54:40 [snail-job-job-1,993-1] INFO  com.bjltd.test.TestTimeout
 - snail-job-job-1,993-1开始执行任务
2024-09-24 16:54:50 [nioEventLoopGroup-2-1] INFO  c.a.s.c.c.l.report.ReportLogListener
 - Data report log successfully requestId:[15]
2024-09-24 16:55:10 [snail-job-job-1,993-1] INFO  com.bjltd.test.TestTimeout
 - snail-job-job-1,993-1任务被中断

从客户端日志中可以看出来,任务从开始到任务被中断间隔30秒。

任务批次列表中显示

测试总结

  • 超时时间是设置任务最大可以执行时长。到了这个时间就会停止任务。
  • 停止任务并不保证必然停止
  • 它是一个保底方案。避免因为各种意外而造成的长时间任务驻留。