一、使用背景
目前项目中,采用的是微服务框架,由于在微服务中,存在需要定时的任务。但如果定时任务维护在每个微服务下,当微服务部署多个实例的情况下,会出现定事任务多次执行的情况。并且在解决问题的基础上,希望能够实现动态修改任务的定时时间,可以通过页面对定时任务进行控制。
二、XXL-JOB简单介绍
首先,XXL-JOB是一个轻量级分布式任务调度平台,内容采用了Quartz定时框架实现,服务之间通信通过RPC的方式实现。
其次,在功能方面:
支持通过web页面对任务进行增删改查操作
支持动态修改任务状态、启动、停止等,即时生效。
支持多种阻塞处理策略,如串行、丢弃后续调度、覆盖之前调度
支持超时控制、失败重试、邮件报警等处理
......
三、服务端实现过程
1、XXL-JOB源码下载:
其中,xxl-job-core为核心代码块,xxl-job-admin为任务调度中心管理模块,部署的话,部署xxl-job-admin即可。
2、数据库创建:
sql文件为:xxl-job/doc/db/tables_xxl_job.sql,在mysql数据库中执行该sql,能生成新的数据库xxl-job及相关的数据库表xxl_job_*。
目前从源码来看,暂时只支持mysql数据库,如需支持其他数据库,可在源码上进行相关的修改:如mybatis的配置、sql语句等。
3、xxl-job-admin模块配置修改:
修改xxl-job