STACKJAVA

Code ví dụ Java đặt lịch với Quartz Scheduler

Code ví dụ Java đặt lịch với Quartz Scheduler.

(Xem thêm: Code ví dụ Java đặt lịch với Timer, TimerTask)

(Xem thêm: Code ví dụ Spring Boot tạo lịch với annotation @Scheduled)

1. Quartz Scheduler là gì?

Quartz là một thư viện, một framework mã nguồn mở cho phép bạn lên lịch các công việc theo một thời gian định nghĩa trước (bao lâu thì lặp lại 1 lần, chạy trong những thời gian nào…)

2. Cài đặt Quartz

Trong bài này mình sẽ thực hiện cài đặt bản 2.2:

2.1 Cài đặt qua file .jar

Các bạn download file  Quartz 2.2.3.tar.gz và giải nén, sau đó import các file .jar vào trong project java

2.2 Cài quartz qua maven

Trường hợp sử dụng maven, các bạn thêm dependency sau đây vào file pom.xml

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.2.1</version>
</dependency>
<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz-jobs</artifactId>
  <version>2.2.1</version>
</dependency>

3. Code ví dụ

Các công nghệ sử dụng:

Tạo Maven Project

Cấu trúc Project

Thư viện sử dụng:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>stackjava.com</groupId>
  <artifactId>QuartzExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>2.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz-jobs</artifactId>
      <version>2.2.1</version>
    </dependency>
  </dependencies>
</project>

Tạo Job (Task, Công việc)

package stackjava.com.quartzexample;

import java.util.Date;

import org.quartz.*;

public class MyJob implements Job{

  public void execute(JobExecutionContext arg0) throws JobExecutionException {
    System.out.println("Run my Job: "+ new Date());
  }

}

Demo1.java

package stackjava.com.quartzexample;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class Demo1 {
  public static void main(String[] args) throws SchedulerException {
    Trigger trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "group1")
        .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();
    
    JobDetail job = JobBuilder.newJob(MyJob.class)
        .withIdentity("jobName", "group1").build();

    	Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    	scheduler.start();
    	scheduler.scheduleJob(job, trigger);

  }
}

Demo:

Demo2.java

package stackjava.com.quartzexample;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class Demo2 {
  public static void main(String[] args) throws SchedulerException {
    Trigger trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "group1")
        .withSchedule(CronScheduleBuilder.cronSchedule("0/5 1-30 * * * ?")).build();

    JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("jobName", "group1").build();

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();
    scheduler.scheduleJob(job, trigger);

  }
}

(Xem lại: Cron expression là gì? Hướng dẫn cú pháp cron expression)

Demo:

 

Code ví dụ Java đặt lịch với Quartz Scheduler

Okay, Done!

Download code ví dụ trên tại đây.

 

References:

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/