好吧又是被吐槽写了挫挫的代码的一天,虽然写的代码不太好,但是还是新学习了Quartz作业调度框架的使用,现做个笔记吧~
首先介绍下在做项目的需求:
使用flume读取日志文件,使用拦截器对日志文件的内容进行信息聚合后存储到es当中。在这个过程中,会存在因意外原因丢失数据的问题,而当部分数据丢失,会引起flume拦截器中有部分多余的信息堆积,长此以往会降低flume的处理速度。
针对这个问题,现设计的是使用Quartz实现一个定时任务,定时去判断拦截器中是否有数据堆积,并将堆积的数据删除。
二话不说,直接上代码~
首先是定义MyScheduler类
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.concurrent.TimeUnit;
public class MyScheduler {
public void go() throws Exception {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
//获得要执行的对象
JobDetail snapJobDetail = JobBuilder.newJob(SnapJob.class).withIdentity("job1","group1").build();
JobDetail coverJobDetai = JobBuilder.newJob(CoverJob.class).withIdentity("job2","group2").build();
//定义触发