JAVA定时器每日删除ES过期索引

JAVA定时器每日删除ES过期索引
背景:在Linux服务器上,设置一个后台进程,每天0点10分自动删除ELK中Elasticsearch中超过三个月的旧索引,使用Quartz实现。
废话少说,直接上代码!!!
目录:
1、源码:
2、调用方法:

1、源码:
(1)QuartzCli.java
package com.remoa.quartzCli;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

/**
 * This class is used to use Quartz
 * @author remoa
 * @since 2017.09.18
 */
public class QuartzCli{
    //日志记录
    private static final Log LOG = LogFactory.getLog(QuartzCli.class);
    //后台流程每天0点10分开始跑
    //public static final String INDEX_DELETE_CRON = "0 10 0 * * ?";
    //后台流程每10秒开始跑
    private static final String INDEX_DELETE_CRON = "*/10 * * * * ?";
    //定义Job名字
    private static final String JOB_NAME = "Index_quartz_cli";

    /**
     * 启动定时任务
     */
    public void start(){
        System.out.println("Start quartz mode: " + INDEX_DELETE_CRON);
        LOG.info("Start quartz mode: " + INDEX_DELETE_CRON);
        //SchedulerFactory:提供用于获取调度程序实例的客户端可用句柄的机制
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        //Scheduler:调度程序,接口,代表一个独立运行容器,调度程序维护JobDetail和触发器的注册表,一旦注册,调度程序负责执行作业。
        Scheduler scheduler = null;
        try {
            //设置调度程序的实现类
            scheduler = schedulerFactory.getScheduler();
        } catch (SchedulerException e) {
            LOG.error(e.getMessage(), e);
        }
        //实例化JobDetail调度任务,JobDetail存放作业的状态,JobDetail对象储存作业的侦听器、群组、数据映射、描述以及作业的其它属性。
        //newJob方法设置需要执行的Job任务类名
        JobBuilder jobBuilder = JobBuilder.newJob(MyJob.class);
        //withIdentity设置JobDetail的name和group
        jobBuilder.withIdentity(JOB_NAME, "remoaGroup");
        //JobDetail是一个接口,必须通过JobBuilder的build方法实例化JobDetail
        JobDetail job = jobBuilder.build();
        //实例化Trigger触发器,实现对作业的调度。
        CronTrigger cronTrigger = (CronTrigger)TriggerBuilder.newTrigger()
                .withIdentity("Cron_Trigger" + System.currentTimeMillis(), "remoaGroup")
                .withSchedule(CronScheduleBuilder.cronSchedule(INDEX_DELETE_CRON))
                .startNow()
                .build();
        //JobDataMap是java map的具体实现,并添加了一些便利的方法用于存储与读取原生类型数据,可以为Job实例提供属性/配置
        job.getJobDataMap()
                .put("executor", this);
        try {
            //为调度程序设置job和trigger
            scheduler.scheduleJob(job, cronTrigger);
            //调用start开始调度
            scheduler.start();
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
        }
    }

    public static void main(String[] args) {
        QuartzCli quartzCli = new QuartzCli();
        quartzCli.start();
    }

}
(2)MyJob.java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值