EtlScheduler.java
package com.simonftxy.core;
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.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EtlScheduler {
private static Logger _log = LoggerFactory.getLogger(EtlScheduler.class);
public void run() throws SchedulerException {
_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(EtlJob.class).withIdentity("job1", "group1")
.build();
// Trigger the job to run on the next round minute
Trigger trigger = newTrigger().withIdentity("trigger1", "group1")
.startAt(runTime).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) {
e.printStackTrace();
}
// shut down the scheduler
_log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
_log.info("------- Shutdown Complete -----------------");
}
public static void main(String[] args) throws SchedulerException {
EtlScheduler scheduler = new EtlScheduler();
scheduler.run();
}
}
EtlJob.java
package com.simonftxy.core;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EtlJob implements Job {
private static Logger _log = LoggerFactory.getLogger(EtlJob.class);
public EtlJob() {
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
String cmd = "cmd /c kitchen.bat /file:G:\\TDDOWNLOAD\\Dev\\Data_Integration\\ae_demo\\Sample.kjb /level:Detailed >> H:\\1.log";
File execPath = new File("G:/TDDOWNLOAD/Dev/Data_Integration/pdi-4.3.0");
_log.info("Etl Job executed at " + new Date());
try {
Process pro = Runtime.getRuntime().exec(cmd, null, execPath);
BufferedReader input = new BufferedReader(new InputStreamReader(pro.getInputStream(), "GB2312"));
String msg = null;
while ((msg = input.readLine()) != null) {
System.out.println(msg);
}
int exitVal = pro.waitFor();
_log.info("Exited with error code: " + exitVal);
_log.info("Etl Job finished at " + new Date());
} catch (IOException e) {
_log.error("Etl Job IOException. " + e.getMessage());
} catch (InterruptedException e) {
_log.error("Etl Job InterruptedException. " + e.getMessage());
}
}
}
分享到:
相关推荐
实现把job持久化数据库,里面有具体的说明文档 Quartz 1 1 通过quartz创建持久化定时...1.3.1 实现org.quartz.Job接口 6 1.3.2 把以上job持久化到数据库中 6 1.4 启动job所需条件 6 1.4.1 在web.xml中加入如下监听 6
Quartz Job Scheduling Framework 是一个强大的、开源的Java作业调度框架,它允许应用程序定义和执行复杂的定时任务。这个框架的设计目标是提供一个简单且可扩展的解决方案,用于在分布式环境中调度作业。Quartz的...
- 使用`scheduler.scheduleJob()`方法将Job与Trigger关联,然后启动Scheduler。 6. **Job状态管理**: - Job可以暂停、恢复或删除。 - 通过`scheduler.pauseJob()`、`scheduler.resumeJob()`和`scheduler.delete...
而Quartz则允许在配置中指定每个Job实例的并发策略,比如单实例(不允许并发)、多实例(允许并发)等。 在使用定时任务时,避免“坑”至关重要。以下是一些常见问题及解决策略: 1. **任务冲突**:确保任务之间...
本项目名为“schedule-job”,是基于Spring Boot框架与Quartz库构建的分布式任务调度系统,它允许开发者方便地定义、管理和执行定时任务。 【Spring Boot基础知识】 Spring Boot是由Pivotal团队提供的全新框架,其...
Quartz Job Scheduling Framework是一个强大的、开放源代码的作业调度框架,它使应用程序能够在指定的时间执行任务,无需人工干预。这个框架广泛应用于Java应用程序中,用于实现定时任务和工作流管理。在第11章中,...
1. `jobClass`:指定了实现Quartz`Job`接口的任务类。 2. `beanName`:默认为Bean的ID,用于设置任务的名称。 3. `jobDataAsMap`:一个Map,用于向任务传递数据,这些数据会存储在`JobDataMap`中。 4. `...
Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者创建、组织和执行定时任务,从而实现应用中的自动化工作流程。Quartz 中文版 V1.0.0...
### quartz有状态Job和无状态Job详解 #### 一、概述 在Quartz调度器中,根据Job是否能够保持状态,可以将其分为两类:有状态Job(Stateful Job)和无状态Job( Stateless Job)。这两种类型的Job在实现上有所不同,并且...
scheduler.scheduleJob(job, trigger); ``` 关于终止执行的任务,Quartz提供了`scheduler.pauseJob()`和`scheduler.resumeJob()`方法来暂停和恢复Job。如果你想要终止某个任务,你可以调用`scheduler.deleteJob()`...
Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个中文版V0.9.2的文档可能是针对Quartz的一个早期版本的翻译,帮助中国开发者更好地理解和使用这一...
该文档“Quartz Job Scheduling Framework 中文版 V0.9.5.chm”是Quartz的中文版使用手册,包含了关于如何在项目中应用Quartz的详细信息。下面将对其中的关键知识点进行深入探讨: 1. **Job和Trigger**:在Quartz中...
Job(作业)是Quartz的核心概念,它代表一个需要被调度的任务。在Quartz中,我们通常需要配置一个数据库来存储作业、触发器以及相关的状态信息。"quartz-job初始化数据表.zip" 文件显然包含了用于设置Quartz作业调度...
Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者在程序中定义作业(Job)和触发器(Trigger),以实现定时执行特定任务,无需手动...
Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者精确地安排任务执行,无论是简单的单次执行还是复杂的重复任务计划。V0.9.5是Quartz...
再次翻看一下我的博客,最早的那篇《 Quartz Job Scheduling Framwork 》翻译是在 2007 - 10 - 17 02:17 ,距离今日那是一个造人的时间,足见这个翻译过程有多难产。一方面是源于语言水平,再者其间也发生了许多事情...
Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。
通过调用Scheduler的start()方法启动调度服务,然后使用`scheduleJob(JobDetail, Trigger)`方法将Job和Trigger关联起来,设置好后,Scheduler会根据Trigger的设定自动执行Job。 在使用quartz-all-1.6.0.jar时,你...
Quartz Job是一个强大的任务调度框架,它为Java应用程序提供了丰富的定时任务管理能力。Chuck Cavaness是Quartz的作者,而Unmi(隔叶黄莺)则是中文版文档的翻译者,使得中国的开发者能更好地理解和应用这个框架。该...