写一个applicationContext-quartz.xml作为spring的插入quartz管理的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
<property name="configLocation" value="classpath:quartz.properties"/>
<property name="triggers">
<list>
<ref bean="trigger1"/>
<ref bean="trigger2"/>
</list>
</property>
</bean>
<bean id="jobDetail1" class="frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="simpleService"/>
<property name="targetMethod" value="testMethod1"/>
<property name="shouldRecover" value="true"/>
</bean>
<bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail1"/>
<property name="cronExpression" value="0/5 * * ? * * *"/>
</bean>
<bean id="jobDetail2" class="frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="simpleService"/>
<property name="targetMethod" value="testMethod2"/>
<property name="shouldRecover" value="true"/>
</bean>
<bean id="trigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobDetail2"/>
<property name="startDelay" value="1"/>
<property name="repeatCount" value="100"/>
<property name="repeatInterval" value="1000"/>
</bean>
</beans>
很明显,这里jobdetail使用的是frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
因为之前如果使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean会出现一系列序列化问题,这里我们直接使用几个牛人写的这2个类来覆盖使用。
如果是配置集群quartz,让我们来关注下位于classpath:quartz.properties的这个配置文件。
#==============================================================
#Configure Main Scheduler Properties
#==============================================================
org.quartz.scheduler.instanceName = TestScheduler1
org.quartz.scheduler.instanceId = AUTO
#==============================================================
#Configure ThreadPool
#==============================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
#==============================================================
#Configure JobStore
#==============================================================
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.tablePrefix = QRTZ_
org.quartz.jobStore.maxMisfiresToHandleAtATime=10
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
具体里面很多配置的信息可以自己上网搜索,必须的也就是这几个,isClustered=true就是用来设置配置多节点集群的。使用中心数据库集群的方式需要的sql脚本就在quartz源代码包里面的doc-->dbTable里面有。
还有需要说明的是一些关于对象序列话的问题,quartz建立集群需要所有jobdetail里面的对象具有序列化能力,当然实现Serializable接口是必须的。如果里面有些你不想序列化的对象可以使用java的transient关键字来控制。例如一个spring的service:
private transient PostIndexService postIndexService;
下面放出几个例子供以后参考用。还有需要了解的基本上网上可以搜索到,包括quartz.properties里面配置quartz的插件,网上也可以搜索的到。这里我就不写了。
转载一篇不错的关于quartz的文章:
http://wordpress.huabaner.net/?p=327
分享到:
相关推荐
### Quartz定时任务表达式详解 在探讨Quartz定时任务表达式的使用之前,我们先了解下Quartz是什么。Quartz是一个开源的作业调度框架,能够触发在指定时间运行的任务,广泛应用于Java应用程序中进行定时任务的管理。...
`quartz-monitor`可能是一个用于监视和管理Quartz集群的Web应用,它允许用户查看正在运行的任务、触发器以及它们的状态,包括CronTrigger的调度信息。 了解了这些基本概念后,开发者可以更有效地利用Quartz和Cron...
【Spring集成Quartz定时任务与数据库实现集群详解】 ...在Spring的配置文件中,我们创建一个`SchedulerFactoryBean`,设置数据源,以及Quartz的配置参数。例如,指定使用数据库存储job和trigger信息: ```xml ...
4. 复制和导出:用户可以方便地复制生成的表达式,或者将配置保存为文件,以便在其他地方使用。 5. 帮助文档:可能包含了关于CronTrigger表达式语法的详细说明,帮助用户理解每个部分的含义和用法。 使用这个插件,...
在Quartz中,这些表达式通常存储在`quartz.properties`配置文件中,比如我们看到的`quartz.properties`文件,可能包含如下配置: ```properties org.quartz.scheduler.instanceName = DefaultQuartzScheduler org....
当一个正在运行的节点突然失效时,Quartz集群应该能够自动检测并重新安排该节点上的任务到其他存活的节点。这需要正确配置`org.quartz.jobStore.misfireThreshold`,以决定何时认为一个触发器"误火"并需要重新安排...
标题提到的“quartz表达式生成工具”是为了帮助开发者更方便地创建和管理Quartz作业(jobs)的执行时间,即cron表达式。在Java应用中,通过cron表达式,我们可以精确地设置任务在何时运行,比如每天的特定时间或者每...
总的来说,Spring集成Quartz集群配置是一个涉及到多个组件协同工作的过程,包括Spring容器、Quartz调度器、数据库存储以及集群间的通信。正确配置和使用这些元素可以构建出一个稳定、高可用的定时任务系统。在实际...
Quartz的集群配置是另一个重要的话题。在高可用性环境中,我们可能需要配置多个Quartz实例以实现任务的冗余和负载均衡。这涉及到`org.quartz.jobStore`属性的设置,例如选择支持集群的数据存储(如JDBCJobStore),...
2. **Spring配置**: 创建一个Spring配置文件,例如`quartz-context.xml`,配置Quartz Scheduler,声明`SchedulerFactoryBean`,并设置属性如`configLocation`指向`quartz.properties`文件,以及`...
在全局配置文件中指定数据库的相关参数,如dialect、driverClassName、url、username和password,以及定时任务的cron表达式。 Quartz集群的配置和使用涉及到多个层面,例如: - **配置Scheduler**:在Quartz应用中...
这些示例通常会展示如何在Spring中配置Quartz,创建作业和触发器,以及如何实现JDBC-JobStore的配置。 6. **最佳实践**: - 为了提高性能,可以考虑使用集群友好的调度策略,如`StatefulJob`,确保状态在不同节点...
6. **集群节点间的协调**:在每个节点上启动调度器时,通过配置`org.quartz.properties`文件的`org.quartz.scheduler.instanceId`属性,让它们具有唯一的实例ID,避免同一任务被多个节点同时执行。通常,你可以设置...
在分布式环境下,Quartz支持集群模式,这意味着多个Quartz实例可以在不同的服务器上运行,共享同一个任务调度状态。为了实现这一点,你需要确保所有实例都连接到同一数据库,并正确配置`quartz.properties`文件以...
Quartz 的集群配置是其高级特性之一,它允许在多个节点上分布式的调度和执行任务,以提高系统的可用性和容错性。在集群环境中,每个节点都是 Scheduler 的实例,它们共享相同的调度信息,并且能够处理其他节点失败时...
Quartz的配置主要通过`quartz.properties`文件进行。该文件中可以设置数据库连接、线程池大小、Job存储方式等。例如: ``` org.quartz.scheduler.instanceName = MyScheduler org.quartz.threadPool.class = org...
Quartz的集群配置允许在多台服务器上部署,以提高任务调度的稳定性和可靠性。 在Java软件开发中,任务调度是一个常见的需求,例如论坛的RSS生成、积分排名统计和用户锁定任务的解锁。这些任务的执行通常涉及到多...
Quartz集群是基于Java的开源任务调度框架,用于在分布式环境中执行定时任务。它提供了高度可配置性、...博客文章中的内容可能详细解析了如何设置、配置和管理Quartz集群,以及在实际项目中应用Quartz的技巧和最佳实践。
4. `org.quartz.jobStore.isClustered`: 是否开启集群模式,若启用,调度器会共享任务状态,提高可用性。 5. `org.quartz.jobStore.tablePrefix`: 数据库表前缀,当使用数据库存储时,Quartz会创建一系列以该前缀...