SpringMVC引入QUARTZ定时器原理分析学习

整体流程:

系统初始化时,加载quartz.properties配置文件,获取定时器相关配置,包括定时器相关表前缀,jobstore实现类等配置;系统启动完成后,将数据库配置的定时器信息以bean的形式注册,然后使用监听器监听Job、Trigger等。(红色字体部分暂时不是完全理解);

定时器初始化完成以后,具体定时器通过调用job接口的execute方法实现业务逻辑的定时处理;

quartz.properties

org.quartz.scheduler.instanceName=TestScheduler
org.quartz.scheduler.instanceId=instance_one
org.quartz.scheduler.skipUpdateCheck=false

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5

org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=false

org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.url = jdbc:mysql://**********:3306/db_name?useUnicode=true&characterEncoding=UTF-8
org.quartz.dataSource.myDS.user = ****
org.quartz.dataSource.myDS.password = ******
org.quartz.dataSource.myDS.maxConnections = 10
org.quartz.dataSource.myDS.validationQuery = SELECT table_name FROM information_schema.tables
org.quartz.dataSource.myDS.validateOnCheckout = true
org.quartz.dataSource.myDS.maxIdleSeconds = 50
org.quartz.dataSource.myDS.connectionProvider.class = com.kyee.nextframework.plugins.quartzsupport.conn_provider.CustomConnectionProvider
#org.quartz.dataSource.myCustomDS.connectionProvider.class = com.kyee.test.quartz.MYConnectionProvider

org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=false

ConnectionProvider加载数据源

通过配置org.quartz.dataSource.myDS.connectionProvider.class = com.kyee.nextframework.plugins.quartzsupport.conn_provider.CustomConnectionProvider ,其中CustomConnectionProvider 实现了ConnectionProvider接口,来完成定时器数据源加载;

定时器工厂SchedulerFactoryBean

SchedulerFactoryBeanService通过继承SchedulerFactoryBean类初始化时创建定时器工厂,并实现create方法创建定时器并以bean的形式注册;

具体定时器业务类

通过继承QuartzJobBean类,重写doJob方法完成业务模块定时处理;其中最核心父类调用的是job接口的是execute方法。

 

你可能感兴趣的:(java)