`
岩城天壹
  • 浏览: 28761 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Use Quartz to schedule running ETL job

    博客分类:
  • Java
阅读更多

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());
		}

	}
}
 
分享到:
评论

相关推荐

    quartz job持久化

    实现把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 中文版

    Quartz Job Scheduling Framework 是一个强大的、开源的Java作业调度框架,它允许应用程序定义和执行复杂的定时任务。这个框架的设计目标是提供一个简单且可扩展的解决方案,用于在分布式环境中调度作业。Quartz的...

    quartz定时任务所用jar包

    - 使用`scheduler.scheduleJob()`方法将Job与Trigger关联,然后启动Scheduler。 6. **Job状态管理**: - Job可以暂停、恢复或删除。 - 通过`scheduler.pauseJob()`、`scheduler.resumeJob()`和`scheduler.delete...

    springboot的schedule和quartz到底怎么选以及如何支持并发和避坑

    而Quartz则允许在配置中指定每个Job实例的并发策略,比如单实例(不允许并发)、多实例(允许并发)等。 在使用定时任务时,避免“坑”至关重要。以下是一些常见问题及解决策略: 1. **任务冲突**:确保任务之间...

    schedule-job, 基于Spring Boot Quartz 的分布式任务调度系统.zip

    本项目名为“schedule-job”,是基于Spring Boot框架与Quartz库构建的分布式任务调度系统,它允许开发者方便地定义、管理和执行定时任务。 【Spring Boot基础知识】 Spring Boot是由Pivotal团队提供的全新框架,其...

    Quartz Job Scheduling Framework第11章翻译初稿

    Quartz Job Scheduling Framework是一个强大的、开放源代码的作业调度框架,它使应用程序能够在指定的时间执行任务,无需人工干预。这个框架广泛应用于Java应用程序中,用于实现定时任务和工作流管理。在第11章中,...

    SpringQuartz的使用文档

    1. `jobClass`:指定了实现Quartz`Job`接口的任务类。 2. `beanName`:默认为Bean的ID,用于设置任务的名称。 3. `jobDataAsMap`:一个Map,用于向任务传递数据,这些数据会存储在`JobDataMap`中。 4. `...

    Quartz Job Scheduling Framework 中文版 V1.0.0.rar

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者创建、组织和执行定时任务,从而实现应用中的自动化工作流程。Quartz 中文版 V1.0.0...

    quartz有状态Job和无状态Job

    ### quartz有状态Job和无状态Job详解 #### 一、概述 在Quartz调度器中,根据Job是否能够保持状态,可以将其分为两类:有状态Job(Stateful Job)和无状态Job( Stateless Job)。这两种类型的Job在实现上有所不同,并且...

    Quartz调度、终止执行的任务

    scheduler.scheduleJob(job, trigger); ``` 关于终止执行的任务,Quartz提供了`scheduler.pauseJob()`和`scheduler.resumeJob()`方法来暂停和恢复Job。如果你想要终止某个任务,你可以调用`scheduler.deleteJob()`...

    Quartz Job Scheduling Framework 中文版 V0.9.2

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个中文版V0.9.2的文档可能是针对Quartz的一个早期版本的翻译,帮助中国开发者更好地理解和使用这一...

    Quartz Job Scheduling Framwork中文文档

    该文档“Quartz Job Scheduling Framework 中文版 V0.9.5.chm”是Quartz的中文版使用手册,包含了关于如何在项目中应用Quartz的详细信息。下面将对其中的关键知识点进行深入探讨: 1. **Job和Trigger**:在Quartz中...

    quartz-job初始化数据表.zip

    Job(作业)是Quartz的核心概念,它代表一个需要被调度的任务。在Quartz中,我们通常需要配置一个数据库来存储作业、触发器以及相关的状态信息。"quartz-job初始化数据表.zip" 文件显然包含了用于设置Quartz作业调度...

    Quartz Job Scheduling Framework 中文版 chm版

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者在程序中定义作业(Job)和触发器(Trigger),以实现定时执行特定任务,无需手动...

    Quartz Job Scheduling Framework 中文版 V0.9.5 API帮助文档

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者精确地安排任务执行,无论是简单的单次执行还是复杂的重复任务计划。V0.9.5是Quartz...

    Quartz_Job+Scheduling_Framework

    再次翻看一下我的博客,最早的那篇《 Quartz Job Scheduling Framwork 》翻译是在 2007 - 10 - 17 02:17 ,距离今日那是一个造人的时间,足见这个翻译过程有多难产。一方面是源于语言水平,再者其间也发生了许多事情...

    Quartz Job Scheduling Framework

    Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。

    quartz-all-1.6.0.jar包定时任务jar

    通过调用Scheduler的start()方法启动调度服务,然后使用`scheduleJob(JobDetail, Trigger)`方法将Job和Trigger关联起来,设置好后,Scheduler会根据Trigger的设定自动执行Job。 在使用quartz-all-1.6.0.jar时,你...

    Quartz Job 中文文档 CHM格式

    Quartz Job是一个强大的任务调度框架,它为Java应用程序提供了丰富的定时任务管理能力。Chuck Cavaness是Quartz的作者,而Unmi(隔叶黄莺)则是中文版文档的翻译者,使得中国的开发者能更好地理解和应用这个框架。该...

Global site tag (gtag.js) - Google Analytics