定时任务解决方案4 spring quartz 分布式解决 利用数据库保存任务

分布式的任务我大概学习了下,

主要是利用quartz cluster将任务保存到数据库中,

然后利用一定的lock机制,

保证任务执行单例执行等等特性

 

还是先看spring配置文件

使用Spring Quertz 分布式 定时任务配置

 

 

然后是

quartz-cluster.properties

文件

#============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName = ClusteredScheduler org.quartz.scheduler.instanceId = AUTO #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 5 org.quartz.threadPool.threadPriority = 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true #============================================================================ # Configure JobStore ,importent ,you must modified the table info handlely #============================================================================ org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.useProperties = false org.quartz.jobStore.tablePrefix = QRTZ_ org.quartz.jobStore.isClustered = true org.quartz.jobStore.clusterCheckinInterval =15000

 

 

 

 

除了配置,我们自己需要实现job的内容

 

package cn.test.schedule.spring; import org.apache.struts2.ServletActionContext; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.quartz.QuartzJobBean; /** *

Title:SpringQuertzClusterTaskSchedulerTester

*

Description: * 应为要持久化等特性操作,需要继承 QuartzJobBean *
由于要被持久化,所以不能存放xxxxManager类似对象, * 只能从每次从QuartzJobBean注入的ApplicationContext 中去取出 * *

*

Copyright: Copyright (c) 2011

* @author Allchin * * @version 1.0 $ 2011-5-19 下午08:03:00 * * */ public class SpringQuertzClusterTaskSchedulerTester extends QuartzJobBean { private ApplicationContext applicationContext=null; @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { System.out.println(ServletActionContext.getServletContext().getServerInfo()); } public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } }

 

针对不同的数据库,

要导入的quartz 工作时需要的表与库的sql文件,

这些都可以从网上下载到.

 

 

你可能感兴趣的:(Schedule)