- 浏览: 7328175 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
<table class="bbcode&qu ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
针对项目中的定时任务执行过程中,程序突然异常终止,重新启动,任务继续运行,那么需要将quartz进行持久化。针对网上的quartz的持久化多是和spring整合,由于项目中不一定采用spring做容器,所以没有采用网上千篇一律的和spring整合 的方式。
1.首先说明一下我下载的quartz2.0版本,在quartz\docs\dbTables目录中选择mysql的脚本导入到数据库。
2.配置quartz的持久化的配置文件quartz.properties.默认调度信息基于RAM的内存方式,重启之后调度状态信息丢失。
#============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName: QuartzJdbcScheduler org.quartz.scheduler.instanceId: AUTO org.quartz.scheduler.skipUpdateCheck: true #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount: 3 org.quartz.threadPool.threadPriority: 5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold: 60000 #org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore 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.jobStore.tablePrefix: QRTZ_ org.quartz.jobStore.isClustered: false #============================================================================ # Configure Datasources #============================================================================ org.quartz.dataSource.myDS.driver: com.mysql.jdbc.Driver org.quartz.dataSource.myDS.URL: jdbc:mysql://localhost:3306/quartz org.quartz.dataSource.myDS.user: root org.quartz.dataSource.myDS.password: root org.quartz.dataSource.myDS.maxConnections: 5
3.创建简单的job任务
package com.easyway.app.quartz.jdbc; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 一个简单的定时任务 * @author longgangbai * */ public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { _log.info("Hello World! - " + new Date()); } }
4.创建触发器并调度相关的任务
package com.easyway.app.quartz.jdbc;
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 一个简单测试Quartz各种调度信息保存数据库的类
*
* @author longgangbai
*
*/
public class ScheduleMain {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(ScheduleMain.class);
log.info("------- Initializing ----------------------");
// First we must get a reference to a scheduler
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
log.info("------- Initialization Complete -----------");
// computer a time that is on the next round minute
Date runTime = evenMinuteDate(new Date());
log.info("------- Scheduling Job -------------------");
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
// Trigger the job to run on the next round minute
CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.startNow()
.build();
// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + runTime);
// Start up the scheduler (nothing can actually run until the
// scheduler has been started)
sched.start();
log.info("------- Started Scheduler -----------------");
// wait long enough so that the scheduler as an opportunity to
// run the job!
log.info("------- Waiting 65 seconds... -------------");
try {
// wait 65 seconds to show job
Thread.sleep(65L * 1000L);
// executing...
} catch (Exception e) {
}
// shut down the scheduler
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
}
public static void main(String[] args) throws Exception {
ScheduleMain example = new ScheduleMain();
example.run();
}
}
发表评论
-
[转]Jython初探
2014-01-07 11:19 2404转载自: ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3351TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51571文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14170最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8682TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2705TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2802TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2447TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2776TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2694TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2075TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2821TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3692TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9415TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6124在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2760Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2622Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3092Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3163Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4563Feed4Junit官方地址: http://datab ...
相关推荐
1. **JDBC 持久化**:这是 Quartz 最常见且推荐的持久化方式。Quartz 提供了一套 SQL 脚本,用户可以将其运行在支持的数据库上,创建所需的表结构。然后,Quartz 的 JobStore 实现(如 `org.quartz.impl....
数据库持久化是Quartz.NET中的关键功能,它确保了任务调度信息在系统重启或故障后不会丢失。当使用数据库持久化时,所有的作业(Jobs)和触发器(Triggers)都会被存储在数据库中。这样,即使应用程序或服务器崩溃,...
Quartz的持久化机制依赖于一组特定的数据库表,这些表存储了Job(任务)和Trigger(触发器)的信息。以下是Quartz默认使用的数据库表: 1. QRTZ_JOB_DETAILS:存储Job的详细信息,如Job类名、是否持久化、组名等。 ...
Quartz是Java领域一款强大的开源任务...了解并掌握以上知识点,你就能创建和管理自己的Quartz持久化任务,实现高效稳定的定时任务执行。在实际应用中,Quartz的强大灵活性和扩展性使其成为很多复杂定时任务场景的首选。
在“Quartz2.0持久化到数据库”这个主题中,我们将深入探讨如何将Quartz2.0的任务调度信息存储到数据库中,以便在系统重启或故障后能够恢复任务,并提供更可靠的调度服务。 首先,理解Quartz2.0的持久化机制至关...
一、Quartz持久化的意义 1. 任务恢复:当系统发生故障或重启时,能够恢复之前设置的任务,保证任务的连续性。 2. 资源优化:将任务状态保存在数据库中,减少内存压力,提高系统的稳定性和可靠性。 二、Quartz持久化...
在本文中,我们将深入探讨如何在Spring Boot 2.3版本中集成Quartz定时任务,并实现其持久化到数据库,以便支持集群环境。这个过程的关键在于配置Quartz Scheduler,设置数据库连接,以及确保任务在多节点环境中能够...
任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
2. **Quartz持久化**: - Quartz支持多种持久化机制,如JDBC JobStore、RAMJobStore等。JDBC JobStore将任务和触发器信息保存在数据库中,确保系统重启后任务不会丢失。 3. **自定义Job类**: - 开发者需要继承`...
使用Quartz持久化功能时,还需要配置Scheduler的属性,如数据源、表前缀等,这通常在`quartz.properties`配置文件中进行。正确配置后,Quartz会在启动时自动将任务信息写入数据库,同时在系统重启后能从数据库中恢复...
在企业级应用中,为了保证服务的高可用性和任务的连续性,往往需要将调度信息持久化到数据库中,这就是所谓的Quartz持久化。Quartz2.2版本在前一版本的基础上进行了优化和增强,提供了更加稳定和灵活的持久化机制。 ...
1 通过quartz创建持久化定时执行任务 3 1.1 首先创建一个基本的web工程,所需jar包 3 1.2 Quartz配置文件quartz.properties 4 1.3 创建job 6 1.3.1 实现org.quartz.Job接口 6 1.3.2 把以上job持久化到数据库中 6 1.4...
最后,当应用程序启动时,Quartz会使用配置的JobStore将作业和触发器的信息持久化到数据库,即使应用程序重启,也能恢复之前的状态,继续执行已安排的任务。 总结,Quartz 2.2.0的JobStore持久化到数据库功能提供了...
在Quartz 2.2.1版本中,对存储和持久化进行了优化,以支持更高效、可靠的作业调度。在这个基于Spring的配置中,我们将深入探讨如何在Spring应用中集成Quartz,实现任务的存储和持久化。 首先,我们需要在Spring配置...
Quartz.NET+TopSelf 实现定时服务,支持Job持久化和集群,异常重启 介绍:https://blog.csdn.net/qq_27559331/article/details/105067550 如果你觉得对你有用,麻烦你给个好评!
在“quartz2.0 数据库持久化 图形化管理界面代码示例”中,我们关注的是如何通过数据库来保存和管理 Quartz 的任务信息,并且通过图形化的用户界面进行操作。 1. **数据库持久化**:在 Quartz 2.0 中,任务和触发器...
quartz持久化建表pdm,任务调度持久化所需要的12张表-QRTZ开头,外带三张项目中附加的,供参考,记录
在1.8.6版本中,Quartz提供了数据库持久化的功能,这使得任务调度的状态能够在系统重启后得以恢复,增强了系统的可靠性和稳定性。数据库持久化是通过将作业和触发器的信息存储在关系型数据库中实现的。 Spring框架...
Quartz的定时任务持久化是指将任务的相关信息(如触发器、作业详情)存储到数据库中,而不是仅仅保留在内存里。这样做的好处是,即使应用服务器重启,之前设定的任务也不会丢失,因为它们可以从数据库中重新加载。...
在分布式系统中,为了保证任务的可靠性和持久性,Quartz提供了数据库持久化功能,即将作业(Jobs)和触发器(Triggers)的信息存储在数据库中。这样,即使应用程序重启或服务器故障,任务调度信息也不会丢失,能够...