quartz分佈式任務管理
可以分佈式的部署多個節點,quartz調度不同的節點做不同的事情
配置job方式
quartz支持兩種方式配置job,MethodInvokingJobDetailFactoryBean和JobDetailFactoryBean,其中JobDetailFactoryBean可以通過datamap傳遞參數。
配置觸發器方式
觸發器通過兩種方式配置,SimpleTriggerFactoryBean和CronTriggerFactoryBean,後者通過cron表達式配置出發邏輯
分佈式調度實現方式
調度器可以通過內存或者數據庫,通過配置數據庫信息的方式可以實現job的分佈式調度和運行
數據庫表的內容:
qrtz_blob_triggers:自定義的triggers信息
qrtz_cron_triggers:存儲cron trigger
qrtz_simple_triggers:存儲普通的trigger
qrtz_simprop_triggers:存儲calendar interval觸發器
qrtz_fired_triggers:存儲已經觸發的觸發器
qrtz_job_details:定義job內容
qrtz_calendars:定義一個時間段,可以控制觸發器在這個時間段內觸發或者不觸發
qrtz_paused_trigger_grps: 存放暫停的觸發器
qrtz_scheduler_state:存儲所有結點的scheduler,檢查是否失效
qrtz_locks:分佈式鎖表
java源碼
quartz的核心調度類是QuartzSchedulerThread,他的基類是Thread。通過ThreadPool來執行封裝job的JobRunShell。