import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.huawei.huaweibus.operate.service.impl.LineOperateServiceImpl; /** * 后台定时任务 * @author chenhw * */ public class SimpleJob implements Serializable,Job{ /** * xuliehua */ private static final long serialVersionUID = 1L; /** * LOGGER */ private static final Logger LOGGER = LoggerFactory.getLogger(LineOperateServiceImpl.class); /** * to do */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 统计每日评论任务 * @param arg0 canshu * @exception JobExecutionException exception */ public void execute(JobExecutionContext arg0) throws JobExecutionException { Date date = new Date(); String now = sdf.format(date); System.out.println("--------------------- "+now+"开始执行任务 ------------------------------- "); } }
<bean id="commentJobQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" autowire="no"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="triggers"> <list> <!-- 触发器列表 --> <ref bean="commentJobdoTime" /> <ref bean="noticeSpplierQuote" /> <ref bean="busplanTriggerTimer" /> <ref bean="testSimpleJob"/> </list> </property> <!--<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/> --> <property name="configLocation" value="classpath:config/quartz.properties" /> </bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="simpleJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <!-- 调用的类 --> <property name="jobClass" value="com.huawei.huaweibus.job.SimpleJob"/> <!-- 调用类中的方法 <property name="targetMethod"> <value>execute</value> </property>--> </bean> <bean id="testSimpleJob" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="simpleJob" /> </property> <!-- cron表达式 --> <property name="cronExpression"> <value>0 0/1 15 * * ?</value> </property> </bean>
quartz.properties:
#org.quartz.scheduler.instanceName = Mscheduler org.quartz.scheduler.instanceId=AUTO #============================================================================ # Configure ThreadPool #============================================================================ orgorg.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount=3 org.quartz.threadPool.threadPriority=5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT #orgorg.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate org.quartz.jobStore.useProperties=true org.quartz.jobStore.dataSource=myDS org.quartz.jobStore.tablePrefix=QRTZ_ org.quartz.jobStore.isClustered=false org.quartz.jobStore.maxMisfiresToHandleAtATime=1 #============================================================================ # Configure Datasources #============================================================================ org.quartz.dataSource.myDS.driver=org.postgresql.Driver org.quartz.dataSource.myDS.URL=jdbc:postgresql://1.1.1.1/xxx org.quartz.dataSource.myDS.user=postgres org.quartz.dataSource.myDS.password=000000 org.quartz.dataSource.myDS.maxConnections=5 #============================================================================ # Configure Plugins #============================================================================ #orgorg.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin #orgorg.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin #org.quartz.plugin.jobInitializer.fileNames = jobs.xml #org.quartz.plugin.jobInitializer.overWriteExistingJobs = true #org.quartz.plugin.jobInitializer.failOnFileNotFound = true #org.quartz.plugin.jobInitializer.scanInterval = 10 #org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
多个tomcat 连接一个数据库后,各tomcat会分别执行,但不会重复执行。关闭一个或多个,其他tomcat会执行。修改配置文件的时间无效,需要删除数据库里的实例:
delete from qrtz_cron_triggers where trigger_name = 'testSimpleJob'; delete from qrtz_triggers where trigger_name = 'testSimpleJob'; delete from qrtz_job_details where job_name = 'simpleJob';
删除quartz 在 mysql 存储的数据 :
delete from qrtz_cron_triggers delete from qrtz_fired_triggers delete from qrtz_triggers delete from qrtz_job_details
相关推荐
总的来说,将Quartz2.2.1与Spring3.1.1集成并在集群环境中运行,需要深入理解Quartz的配置和Spring的bean管理,同时关注集群的稳定性和容错性。通过合理配置和编程,我们可以创建一个高效、可靠的定时任务执行系统。...
Spring通过`org.springframework.scheduling.quartz`包提供了对Quartz的API封装,包括`SchedulerFactoryBean`、`JobDetailFactoryBean`和`TriggerFactoryBean`等,使得我们可以用声明式的方式定义任务和触发器。...
在IT行业中,Spring框架是Java应用开发中的基石,而Quartz则是广泛...通过上述步骤,你已经掌握了Spring集成Quartz集群配置的基本概念。在实践中,根据具体需求调整配置,可以实现高效、稳定且可扩展的任务调度系统。
Quartz还支持集群和持久化,这意味着多个Quartz实例可以在分布式环境中协作调度任务,而且任务的状态和计划可以存储在数据库中,保证了高可用性和容错性。通过Spring与Quartz的整合,可以轻松地在Spring应用中管理...
Spring整合Quartz 2.2.3是Java开发者在实现定时任务时常用的一种技术组合。Quartz是一款开源的作业调度框架,它允许程序在特定时间执行预定的任务,而Spring则是一个强大的企业级应用开发框架,提供了丰富的依赖注入...
总结,Spring Quartz集群配置涉及到多个步骤,包括选择合适的Job Store、配置Spring集成、定义定时任务以及优化集群设置。正确配置后,我们可以获得高可用和可扩展的定时任务调度系统,满足大规模分布式系统的需求。
至于数据库,Quartz集群需要一个共享的数据库存储job和trigger的信息,这就是`dbTables`文件所涉及的内容。Quartz会在数据库中创建一系列的表,用于存储任务元数据,如job信息、trigger信息等。这些表的设计和初始化...
Quartz和Spring Batch是两种非常重要的Java开源框架,它们在企业级应用开发中扮演着重要角色。Quartz主要用于任务调度,而Spring Batch则专注于批量处理。在这个“quartz_springbatch_dynamic”项目中,我们将看到...
1. **配置数据库Job Store**:Quartz允许将任务和触发器存储在数据库中,而不是内存中。这使得多台服务器可以共享任务信息。在`quartz.properties`配置文件中,设置`org.quartz.jobStore.type`为支持事务的数据库Job...
这包括`SchedulerFactoryBean`,用于初始化和管理Quartz调度器,以及`JobDetail`和`Trigger`,它们分别定义了任务和触发执行任务的规则。 3. **定义Job**:编写实现`org.quartz.Job`接口的类,这是实际执行的任务...
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
Spring Quartz 是一个基于 Java 的任务调度框架,它允许开发者定义定时任务并在应用程序中灵活地调度这些任务。这个框架是 Spring 和 Quartz Scheduler 的集成,提供了与 Spring 框架的无缝集成,使得在 Spring 应用...
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
在Spring框架中,定时任务是常见的需求,例如用于执行定期数据同步、日志清理或发送邮件等。...通过理解Quartz的工作原理和Spring的定时任务API,我们可以有效地管理定时任务,确保它们按预期执行。
总之,结合Spring 4.0.6和Quartz 2.2.3构建集群示例,能够帮助你在大型分布式系统中实现灵活、可靠的定时任务调度。通过熟练掌握这一技术,你可以为企业的后台服务提供强大而稳定的定时任务处理能力。
3. **监控和管理**: 实现对Quartz集群的监控,如任务状态、运行时性能等,以便及时发现和解决问题。 总结,Quartz+Spring的分布式集群调度方案能够帮助开发者构建稳定且可扩展的定时任务系统。通过合理配置和实践,...
Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度策略。在SpringBoot中集成Quartz,可以充分利用Spring的依赖注入和管理特性,使得任务调度更加便捷和高效。 首先,我们需要在SpringBoot项目中...
- 考虑使用监控工具(如Prometheus+Grafana)监控Quartz集群的运行状态,以便及时发现和解决问题。 通过以上知识点的学习和实践,开发者可以熟练掌握在Spring环境中使用Quartz实现分布式集群的作业调度,提升系统...
这个"SpringQuartzClusterDemo"示例项目可以帮助开发者理解如何在实际生产环境中配置和使用Spring与Quartz实现集群任务调度,对于需要大规模、高可用性的定时任务管理场景具有很高的参考价值。通过研究此示例,...
Quartz的核心优势在于其灵活性和简单性,允许开发者自由定义任务触发的时间表,并且支持任务和触发器的映射。此外,它还具备调度现场的持久化能力,即使系统崩溃,也能恢复任务调度的状态。 在Quartz集群中,每个...