Quartz scheduling

Quartz scheduling

·

2 min read

Quartz

https://github.com/donhuvy/quartz

https://github.com/quartz-scheduler/quartz

https://www.quartz-scheduler.org/ (die)

https://stackoverflow.com/questions/tagged/quartz-scheduler

Reference document https://github.com/donhuvy/quartz/blob/main/docs/quick-start-guide.adoc

File HelloJob.java

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 HelloJob implements Job {

    private static Logger _log = LoggerFactory.getLogger(HelloJob.class);

    /**
     * Empty constructor for job initialization. Quartz requires a public empty constructor so that the scheduler can instantiate the class whenever it needs.
     */
    public HelloJob() {

    }

    public void execute(JobExecutionContext context) throws JobExecutionException {
        _log.info("Hello World! - " + new Date());
    }

}

File QuartzTest.java

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

public class QuartzTest {

    public static void main(String[] args) {
        try {
            // Grab the Scheduler instance from the Factory.
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            // And start it off.
            scheduler.start();
            // define the job and tie it to our HelloJob class
            JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
            // Trigger the job to run now, and then repeat every 40 seconds.
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(simpleSchedule().withIntervalInSeconds(40).repeatForever()).build();
            // Tell quartz to schedule the job using our trigger.
            scheduler.scheduleJob(job, trigger);
            //scheduler.shutdown();
        } catch (SchedulerException se) {
            se.printStackTrace();
        }
    }

}

// Result:
// 10:29:58.884 [DefaultQuartzScheduler_Worker-1] INFO HelloJob -- Hello World! - Tue Feb 25 10:29:58 GMT+07:00 2025
// 10:30:38.854 [DefaultQuartzScheduler_Worker-2] INFO HelloJob -- Hello World! - Tue Feb 25 10:30:38 GMT+07:00 2025

x