Use Quartz to schedule running ETL job

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

	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值