quartz-solon-plugin [弃用]
<dependency>
<groupId>org.noear</groupId>
<artifactId>quartz-solon-plugin</artifactId>
</dependency>
1、描述
调度扩展插件,基于 quartz 框架进行适配。提供了一个增强的注解 @Quartz,可以支持简化配置或者7段的cron配置。不支持毫秒级的调度。(建议换成:solon.scheduling.quartz)
2、使用示例
// 启用 Quartz 注解的任务
@EnableQuartz
public class JobApp {
public static void main(String[] args) {
Solon.start(JobApp.class, args);
}
}
// 基于 Runnable 接口的模式
@Quartz(cron7x = "2s" ,name = "job1")
public class QuartzRun1 implements Runnable {
@Override
public void run() {
System.out.println("我是 QuartzRun1 (2s)");
}
}
// 基于 Method 的模式(支持 JobExecutionContext 参数注入)
@Component
public class QuartzCom2 {
@Quartz(cron7x = "10s")
public void job2(JobExecutionContext jobContext) {
System.out.println("我是 job2 (10s)");
}
@Quartz(cron7x = "0 0/1 * * * ? *")
public void job3() {
System.out.println("我是 job3 (0 0/1 * * * ? *)");
}
}
3、通过应用配置,可以控制有name的任务
# solon.quartz.{job name} #要控制的job需要设置name属性
#
solon.quartz.job1:
cron7x: 10s #重新定义时间表达式
enable: true #用任务进行启停控制
4、cron7x 支持的表达式
- 或cron:支持7位(秒,分,时,日期ofM,月,星期ofW,年)
- 例:
0 0/1 * * * ? *
- 例:
- 或简配: s,m,h,d
- 例:
2s
- 例:
5、增加持久化调试支持
- quartz.properties (名字不能改)
#指定持久化方案
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.acquireTriggersWithinLock=true
org.quartz.jobStore.misfireThreshold=5000
#指定表前前缀(根据自己需要配置,表结构脚本官网找一下)
org.quartz.jobStore.tablePrefix=QRTZ_
#指定数据源(根据自己需要取名)
org.quartz.jobStore.dataSource=demo
org.quartz.dataSource.demo.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.demo.URL=jdbc:mysql://localhost:3306/quartz?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true
org.quartz.dataSource.demo.user=root
org.quartz.dataSource.demo.password=123456
org.quartz.dataSource.demo.maxConnections=10
org.quartz.datasource.demo.validateOnCheckout=true
org.quartz.datasource.demo.validationQuery=select 1
#指定线程池
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true