1. 程式人生 > >大資料基礎之Quartz(1)簡介、原始碼解析

大資料基礎之Quartz(1)簡介、原始碼解析

一簡介

官網

http://www.quartz-scheduler.org/

What is the Quartz Job Scheduling Library?

Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components that may execute virtually anything you may program them to do. The Quartz Scheduler includes many enterprise-class features, such as support for JTA transactions and clustering.

二 程式碼解析

 

開啟分散式

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.isClustered=true

啟動過程

QuartzScheduler.start

         QuartzSchedulerResources.getJobStore

                  StdSchedulerFactory.instantiate (org.quartz.jobStore.class)

                          JobStoreSupport.setLockHandler (org.quartz.jobStore.lockHandler.class)

                          JobStoreSupport.initialize

                                   setLockHandler (StdRowLockSemaphore)

         JobStoreSupport.schedulerStarted

                  ClusterManager.initialize

                          run

                                   manage

                                            doCheckin

                                                     clusterCheckIn

                                                     Semaphore.obtainLock

                                                             StdRowLockSemaphore.executeSQL (select for update and insert)

                                                     clusterRecover

                          signalSchedulingChangeImmediately

                                   SchedulerSignaler.signalSchedulingChange

                                            QuartzSchedulerThread.signalSchedulingChange

 

QuartzSchedulerThread.run

         JobStore.acquireNextTriggers

         JobStore.triggersFired