超时时间
超时时间的设置,目的是在定时任务到了这个阈值还没有执行完,那么就会调用批次任务线程池的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秒。
任务批次列表中显示
测试总结
- 超时时间是设置任务最大可以执行时长。到了这个时间就会停止任务。
- 停止任务并不保证必然停止
- 它是一个保底方案。避免因为各种意外而造成的长时间任务驻留。