同步操作将从 monkeyk7/spring-dynamic-job 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
SpringBoot与Quartz整合示例,有固定Job与动态Job实现示例,并提供相关工具类。
项目用Maven管理, SpringBoot工程
使用的技术与版本号
application.properties
文件中数据库连接信息,并创建数据库(默认数据为名sdj),
运行others/quartz_mysql_innodb.sql
文件初始化数据库
SDJApplication.java
项目的核心对象为: DynamicSchedulerFactory
该项目已在 HeartBeat 项目中实际使用,
更多运用案例可查看该项目.
动态的Job定义类: DynamicJob
, 在动态操作Job时的类必须是该类的子类(参考TestDynamicJob
)
固定执行的Job示例类: TestFixedJobDetailBean
, 启动时加载,固定执行.
更多的操作请参考类: TestServiceImpl
如果不使用数据库(内存中存储job信息), 取消 dataSource 的配置与引用项
定时任务分两类, 固定的(fixed)与动态的(dynamic)
一.固定的 - 即指固定时间执行(如每天凌晨2点, 或每隔30秒执行)
1.参考TestFixedJobDetailBean类写具体的实现
2.在 SDJConfiguration.java 中配置 job (参照注释部分)
1). 配置 JobDetail (参考 fixedJobDetail)
2).配置 Trigger, 参考 fixedTrigger (注意 cronExpression 的值配置)
对于 cronExpression 的写法, 请参考 http://blog.csdn.net/caiwenfeng_for_23/article/details/17004213
3).将 JobDetail与Trigger 添加到 schedulerFactory 中 (参考 schedulerFactory 配置)
提示: 对于手动编写的 cronExpression 可使用 CronExpression.java 类 进行校验测试
二.动态的 - 即在系统运行中动态添加的job(如 用户添加的 用户同步定时任务)
1.参考 TestDynamicJob 类写具体的实现
2.在需要使用时 创建对应的 DynamicJob 对象,参考如下:
//创建 一个动态的JOB, 测试用
private DynamicJob createDynamicJob() {
return new DynamicJob("test-")
//动态定时任务的 cron, 每20秒执行一次
.cronExpression("0/20 * * * * ?")
.target(TestDynamicJob.class);
}
提示: Job name 要具体, cronExpression 一般根据时间对象(Date)来生成, target对第1步新建的对象
3.如果在Job执行时有参数, 加上对应的参数名与参数值(可多个), 如下:
DynamicJob dynamicJob = createDynamicJob();
dynamicJob.addJobData("mailGuid", UUID.randomUUID().toString());//transfer parameter
这样在Job实现类中可通过 context 来获取,如下:
final Object mailGuid = context.getMergedJobDataMap().get("mailGuid");
4.向 DynamicSchedulerFactory 中注册job, 如下:
DynamicSchedulerFactory.registerJob(dynamicJob);
与该项目相关的博客请访问 http://blog.csdn.net/monkeyking1987/article/details/42173277
若没有找到解决办法的, 欢迎发邮件到shengzhao@shengzhaoli.com一起讨论.
如果在使用项目的过程中发现任何的BUG或者更好的提议, 建议将其提交到项目的 Issues 中, 我会一直关注并不断改进项目.
关注更多我的开源项目请访问 https://andaily.com/my_projects.html
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。