1.前言定时任务有很多种,有的是大框架,有的是简单的实现。比如常见的:JDK的Timer和TimerTaskQuartz异步任务调度框架分布式定时任务XXL-JOBSpring任务注解@Scheduled小编也知道这些,欢迎补充!!今天小编使用的是流行的分布式定时任务xxl-job,具有相对轻量级的优势,但是21年来一直没有大的更新!现在最新的好像是2.4.0。2.xxl-job简介XXL-JOB是一个分布式任务调度平台。其核心设计目标是快速开发、易学、轻量、易扩展。现已开放源码,接入多家公司线上产品线,开箱即用。是美团老板开发的:徐雪丽!本文以实践教学为主。有兴趣的可以去官方文档看看!xxl-作业文档。整体架构图:==最新代码可自行拉取==:项目地址:3.修改配置1.运行sql文件并导出到本地数据库:XXL-JOB调度模块基于自研调度组件,支持集群部署,调度数据库表的描述如下:xxl_job_lock:任务调度锁表。xxl_job_group:执行者信息表,维护任务执行者信息。xxl_job_info:调度扩展信息表:用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名称、机器地址、执行者、执行输入参数和报警邮件等。xxl_job_log:调度日志表:用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度输入参数、调度机器和执行器等。xxl_job_log_report:调度日志报告:用户存储XXL-JOB任务调度日志的报告,将在调度中心的报表功能页面中使用。xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE版本回溯功能。xxl_job_registry:执行器注册表,维护在线执行器和调度中心机器地址信息。xxl_job_user:系统用户表;2.修改xxl-job-admin配置。小编修改了端口号:server.port=8087记得调整成自己的数据库密码:spring.datasource.password=root由于sql文件是直接导入数据库的,所以我们不需要调整数据库的名称!3、需要修改xxl-job-executor-sample-springboot配置。小编这里修改端口号:server.port=8086第11行:改成admin的端口。xxl.job.admin.addresses=http://127.0.0.1:8087/xxl-job-admin第22行:编辑器的9999端口被占用,修改了端口。xxl.job.executor.port=99984,添加自己的定时任务@XxlJob("testJobHandler")publicvoidtestJobHandler()throwsException{for(inti=0;i<5;i++){XxlJobHelper.log("this它是"+i+1+"第log!");System.out.println("这是第"+i+1+"次来看我!");}System.out.println("TimedThetaskisover!");}4.运行项目1,启动项目2,登录按照上一步的配置,我们直接访问端口号和服务名:http://localhost:8087/xxl-job-admin/.帐号:admin密码:123456。3、xxl-job的好处自己写的定时任务可以交给这个manager,这样什么时候运行,定时任务的执行规则都可以在可视化的界面上进行管理和操作,更加人性化!可以动态修改cron表达式,还有日志执行,真是太爽了!!4.查看executor获取url。默认已经集成了springboot。如果自己新建一个模块,可以加一个让管理员管理我们自己项目的定时任务,也就是使用@XxlJob的任务!5.新的任务管理在这里更智能,一些基本的cron表达式可以为你写,非常人性化!!==JobHandler==:@XxlJob中填入名称即可,这里编辑为:@XxlJob("testJobHandler"),所以是testJobHandler。6.执行任务这次我们执行一次,看看控制台是否打印记录,看看我们写的任务有没有执行!任务参数随便输入,本机地址为:http://192.168.1.207:9998/,第4步查看的是管理端地址加端口!7.执行成功我们看到方法执行成功了!!8.查看日志5.总结可以看到我的日志还是有执行失败的。原因是一开始端口被占用了。我没注意。我一直在测试和失败!运行后,您必须检查控制台中是否有任何错误。如果是java.net.BindException:Addressalreadyinuse:bind,那么就是端口号被占用了,改一下就好了!也可以看看小编的这篇文章,详细解决了这个问题!
