最大重试次数和间隔
Job的重试任务没有任何关系, 重试任务是SnailJob另一个独立的模块
重试的触发时机
- 网络超时
- 客户端明确返回错误
- 客户端出现异常
那我们客户端代码随便来个被0除的异常即可。余下的两种情况可自行进行测试。
客户端代码
java
@Component
public class TestRetryTimes extends AbstractJobExecutor {
@Override
protected ExecuteResult doJobExecute(JobArgs jobArgs) {
int i = 1/0;
return ExecuteResult.success();
}
}
这里还是用上一篇文章中推荐的继承虚基类方式来做定时任务。好处有:
- idea能自动补充需要实现的接口类。省得记入参和返回参数。
- 避免任务重名
页面关键配置
其他配置项和上面的验证注解方式定时任务
配置一样
配置项 | 配置内容 |
---|---|
任务名称 | 测试最大重试次数和间隔 |
执行器名称 | com.bjltd.test.TestRetryTimes |
触发类型 | CRON表达式 |
间隔时长 | 0 22 09 * * ? |
最大重试次数 | 4 |
重试间隔 | 10秒 |
说明
- 执行器名称要填写包全路径名。这个是和注解方式有很大区别。
- 这里采用cron表达式,任务每天就激活一次。主要为了方便查看测试结果,也更贴合实际应用场景。
测试结果
客户端的控台
这里抽取关键打印信息:
shell2024-09-23 09:22:10 [snail-netty-server-2] INFO c.a.s.c.job.core.client.JobEndPoint - 任务执行/调度失败执行重试. 重试次数:[1] 2024-09-23 09:22:20 [snail-netty-server-3] INFO c.a.s.c.job.core.client.JobEndPoint - 任务执行/调度失败执行重试. 重试次数:[2] 2024-09-23 09:22:31 [snail-netty-server-4] INFO c.a.s.c.job.core.client.JobEndPoint - 任务执行/调度失败执行重试. 重试次数:[3] 2024-09-23 09:22:41 [snail-netty-server-5] INFO c.a.s.c.job.core.client.JobEndPoint - 任务执行/调度失败执行重试. 重试次数:[4]
任务管理页面查看日志
任务管理页面->点任务名称为
测试最大重试次数和间隔
任务项后面的批次
按钮。在执行批次列表中点批次后面的日志
按钮。
在执行批次详情页面中点击查看日志
按钮
在日志详情中可以看到本批次的详细情况
测试总结
网络超时、客户端明确返回错误、客户端出现异常会触发重试
最大重试次数可以设置重试多少次
重试间隔可以设置每次重试之间间隔的时间