AgileBPM 定时计划 有两种实现:
您可以根据自身情况去选择使用哪种定时计划,当然两者并不冲突。
CronUtil 比较轻量,不支持分布式调度,功能也弱一些,但也足够用。
XXL-JOB 功能强大,但是需要独立部署一个应用去支撑,适合定时计划比较多,而且需要可视化管理的用户。
AgileBPM 中使用 AbScheduled
开启定时计划
配置文件中 配置
ab: |
既可全局开启定时计划
使用定时计划
在需要执行定时计划的方法上添加注解。如: @AbScheduled(cron="0/30 * * * * ?")
实现原理参考 源码 AbScheduledBeanPostProcessor
cron表达式请参考 http://cron.qqe2.com/
提示分布式部署时,定时计划建议只开启一台,否则可能出现重复执行的情况。(当然自行通过乐观锁控制也是可以的)
AgileBPM中使用 XXL-JOB
AgileBPM 定时计划使用的是 xxl-job 分布式定时计划,需要单独部署xxl-job该工程
部署 xxl-job
- 根据 xxl-job 官方文档 部署好定时计划工程,并启动
- AgileBPM 工程配置内容
### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。
xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin
### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用。单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=agile-bpm
xxl.job.executor.ip=
xxl.job.executor.port=9999
### xxl-job, access token:执行器通讯TOKEN,非空时启用
xxl.job.accessToken=
### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
xxl.job.executor.logpath=/data/logs/xxl-job/jobhandler/
### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
xxl.job.executor.logretentiondays=60
配置任务调度
访问 xxl 任务调度中心工程 http://127.0.0.1:8081/xxl-job-admin
添加一个执行器- AppName: 使用 AgileBPM中配置的 xxl.job.executor.appname 值,agile-bpm
- 注册方式:使用自动注册即可
这里注意,客户端注册上的IP需要能被调度中心访问。如 本地开发环境访问阿里云服务器部署的调度中心是不行的,虽然能注册成功,但IP是错的,没法正确供调度中心回调(坑)
配置任务管理器
- 执行器: 选择上一步配置的执行器
- 路由策略: 故障转移
- Cron: 每十分钟执行一次
0 0/10 * * * ?
- JobHandler:
abReminderJob
其他配置默认配置即可
- 启动定时计划
可以查看 执行器注册成功的 OnLine 机器地址,查看任务执行是否正确调度
到这里定时计划就配置完成了