This is a very simple hello world using RAMJobStore
.
Directory Layout
.
├── pom.xml
└── src
└── main
├── java
│ └── biz
│ └── tugay
│ ├── MyQuartzJob.java
│ └── QuartzHelloWorld.java
└── resources
└── quartz.properties
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>biz.tugay</groupId>
<artifactId>my-quartz</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies>
</project>
quartz.properties
org.quartz.scheduler.instanceName = My-Scheduler-Instance
org.quartz.threadPool.threadCount = 1
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
MyQuartzJob.java
import org.quartz.Job;
import org.quartz.JobExecutionContext;
public class MyQuartzJob implements Job {
public void execute(JobExecutionContext context) {
System.out.println("hello world");
}
}
QuartzHelloWorld.java
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzHelloWorld {
public static void main(String[] args) throws Exception {
new QuartzHelloWorld().run();
}
void run() throws Exception {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(MyQuartzJob.class)
.withIdentity("job1", "group1")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInMilliseconds(2000)
.repeatForever())
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
Thread.sleep(5000);
scheduler.shutdown();
}
}
Making the above example work with a PostgreSQL database. Create tables using the scripts here. Database I used in this example is named my-quartz
.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>biz.tugay</groupId>
<artifactId>my-quartz</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.12</version>
</dependency>
</dependencies>
</project>
quartz.properties
org.quartz.scheduler.instanceName=My-Scheduler-Instance
org.quartz.threadPool.threadCount=1
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.dataSource=myDS
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.dataSource.myDS.driver=org.postgresql.Driver
org.quartz.dataSource.myDS.URL=jdbc:postgresql://localhost:5432/my-quartz
org.quartz.dataSource.myDS.user=postgres
org.quartz.dataSource.myDS.password=""
QuartzHelloWorld.java
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzHelloWorld {
public static void main(String[] args) throws Exception {
new QuartzHelloWorld().run();
}
void run() throws Exception {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobKey jobKey = new JobKey("job1", "group1");
// You can not keep scheduling the same job since job now lives in DB
if (!scheduler.checkExists(jobKey)) {
JobDetail job = JobBuilder.newJob(MyQuartzJob.class)
.withIdentity(jobKey)
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMilliseconds(2000)
.withMisfireHandlingInstructionNextWithExistingCount()
.repeatForever())
.build();
scheduler.scheduleJob(job, trigger);
}
scheduler.start();
Thread.sleep(5000);
scheduler.shutdown();
}
}