Quartz Concept

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen517611641/article/details/88929814
  1. 如果你认为Job是Quartz的主角,一定要转变思路,Trigger才是
  2. 一个Scheduler对象,就是一个Quartz实例,一组数据库表

Job & JobDetail

  1. Job JobDetails,一个JobDtail对象才是一个任务实例,包含执行的动作Job对象和Job相关属性,比如JobDetails#JobDataMap;
  2. 一个job可以被多个Trigger关联,但是一个tigger只能关联一个job
  3. JobExecutionContext中的JobDataMap是JobDetail中的JobDataMap和Trigger中的JobDataMap的集合;如果有相同key,后者覆盖前者;

Trigger

CalendarIntervalTrigger + CronTrigger + DailyTimeIntervalTrigger + SimpleTrigger

Trigger存储:
qrtz_triggers
qrtz_blob_triggers自定义Trigger
qrtz_cron_triggers
qrtz_simple_trigger
qrtz_simprop_trigger
qrtz_fired_trigger
qrtz_paused_trigger_grps存放暂停掉的触发器

SimpleTrigger实例通过TriggerBuilder设置主要的属性,通过SimpleScheduleBuilder设置与SimpleTrigger相关的属性。要使用这些builder的静态方法,需要静态导入,其他类型的Trigger一样,注意比较4. Quartz就定义了四种类型的Trigger,搞定就行了

Trigger的状态机转换:看TriggerWrapper类,看Constants State_xxx系列,TriggerState,应该是对应着不同的数据库表

Calendar

DailyCalender + WeeklyCalendar + MonthlyCalendar + AnnualCalendar + HolidayCalendar + CronCalendar 存储qrtz_calendars表中

JDBC Store & DataSource

ConnectionProvider=JNDIConnectionProvider + WeblogicConnectionProvider + PoolingConnectionProvider

PoolingConnectionProvider = C3p0PoolingConnectionProvider + HikariCpPoolingConnectionProvider

Job的durable可以控制job运行完成后是否保存
Trigger在运行完成之后无法选择保存,基于Quartz开发企业级任务调度应用此文中给出了可以保存Trigger的方案;

在DbConnectionManager中,有org.quartz.db的配置

配置实用HikariCpPoolingConnectionProvider时的bug,此类没有无参数的构造方法,无法被实例化!

参考

Quartz数据库表分析

扫描二维码关注公众号,回复: 5726919 查看本文章

猜你喜欢

转载自blog.csdn.net/chen517611641/article/details/88929814