@Scheduled 定时任务_DO your like的博客-CSDN博客https://blog.csdn.net/qq_36777191/article/details/132941244传统定时任务(以Spring自带定时任务为例)
- 不支持集群
- 不支持任务重试
- 不支持动态调用,时钟是定值无法在运行状态实时修改
- 无异常报警机制,执行过程出现异常无法感知需要日志信息辅助
- 不支持生命周期的统一管理,一跑起来就无法管理了,除非手动关闭程序
- 任务数据难以统计,不能保证每次任务的成功因此无法确定有多少次失败任务
xxl-job
主要分为调动服务、应用服务,即应用服务对方法添加@Xxljob("taskname")注解标记为定时任务,然后注册到调度服务,最后调度服务会根据cron触发任务
分布式定时任务可以有效解决上述传统定时任务的缺陷
(xxl-job-admin)调度服务配置完成server.servlet.context、port、accessToken、告警邮箱、job数据库链接等信息后就可以直接启动
业务服务这边需要引入maven依赖(xxl-job-core)然后通过@Configuration @Bean实例化XxlJobSpringExecutor
@Confgruation
public class TaskConf{
@Value("${xxl.job.executor.adminAddresses}")
private String adminAddress;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private String port;
@Value("${xxl.job.executor.accessToken}")
private String accessToken;
@Value("xxl.job.executor.logpath")
private String logpath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays
@Bean
public XxlJobSpringExecutor xxlJobExecutor(){
XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
executor.setAdminAddress();
executor.setAppname();
executor.setAccessToken();
executor.setIp(ip);
executor.setPort(port);
executor.setLogPath(logPath);
executor.setLogRetentionDays(logRetentionDays);
}
}
再后面就可以直接在业务代码的类型 (@Component类) 的方法上添加@XxlJob(alias)