Skip to content

Commit f24bf09

Browse files
author
Frank
committed
added quartz scheduler with mysql - not quite works.
1 parent 8ef193e commit f24bf09

7 files changed

Lines changed: 403 additions & 0 deletions

File tree

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<module>java-concurrency-atomic</module>
6060
<module>google-guava</module>
6161
<module>scheduler-quartz</module>
62+
<module>scheduler-quartz-mysql</module>
6263
</modules>
6364
</profile>
6465
<profile>

scheduler-quartz-mysql/pom.xml

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>tutorials-java</artifactId>
7+
<groupId>com.advenoh</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<groupId>com.advenoh</groupId>
13+
<artifactId>scheduler-quartz-mysql</artifactId>
14+
15+
<name>scheduler-quartz-mysql</name>
16+
<!-- FIXME change it to the project's website -->
17+
<url>http://www.example.com</url>
18+
<properties>
19+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
<logback-core-version>1.1.3</logback-core-version>
21+
<quartz-jobs.version>2.2.1</quartz-jobs.version>
22+
</properties>
23+
24+
<dependencies>
25+
<dependency>
26+
<groupId>junit</groupId>
27+
<artifactId>junit</artifactId>
28+
<version>4.12</version>
29+
<scope>test</scope>
30+
</dependency>
31+
<dependency>
32+
<groupId>org.projectlombok</groupId>
33+
<artifactId>lombok</artifactId>
34+
<version>1.18.4</version>
35+
</dependency>
36+
<dependency>
37+
<groupId>ch.qos.logback</groupId>
38+
<artifactId>logback-classic</artifactId>
39+
<version>1.2.3</version>
40+
</dependency>
41+
<dependency>
42+
<groupId>org.quartz-scheduler</groupId>
43+
<artifactId>quartz</artifactId>
44+
<version>${quartz-jobs.version}</version>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.quartz-scheduler</groupId>
48+
<artifactId>quartz-jobs</artifactId>
49+
<version>${quartz-jobs.version}</version>
50+
</dependency>
51+
<dependency>
52+
<groupId>commons-collections</groupId>
53+
<artifactId>commons-collections</artifactId>
54+
<version>3.2.1</version>
55+
</dependency>
56+
<dependency>
57+
<groupId>org.apache.directory.studio</groupId>
58+
<artifactId>org.apache.commons.logging</artifactId>
59+
<version>1.1.1</version>
60+
</dependency>
61+
<dependency>
62+
<groupId>commons-dbcp</groupId>
63+
<artifactId>commons-dbcp</artifactId>
64+
<version>1.2.2</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>commons-pool</groupId>
68+
<artifactId>commons-pool</artifactId>
69+
<version>1.5.3</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>mysql</groupId>
73+
<artifactId>mysql-connector-java</artifactId>
74+
<version>5.1.34</version>
75+
</dependency>
76+
</dependencies>
77+
78+
<build>
79+
<plugins>
80+
<plugin>
81+
<groupId>org.apache.maven.plugins</groupId>
82+
<artifactId>maven-compiler-plugin</artifactId>
83+
<version>3.1</version>
84+
<configuration>
85+
<source>1.8</source>
86+
<target>1.8</target>
87+
</configuration>
88+
</plugin>
89+
</plugins>
90+
</build>
91+
</project>
92+
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.advenoh;
2+
3+
import org.quartz.Scheduler;
4+
import org.quartz.SchedulerException;
5+
import org.quartz.SchedulerFactory;
6+
import org.quartz.impl.StdSchedulerFactory;
7+
8+
import java.util.Properties;
9+
10+
public class QuartzScheduleServer {
11+
public static void main(String[] args) {
12+
try {
13+
Properties prop = new Properties();
14+
//RMI configuration to make the client to connect to the Quartz server
15+
prop.put("org.quartz.scheduler.rmi.export", "true");
16+
prop.put("org.quartz.scheduler.rmi.createRegistry", "true");
17+
prop.put("org.quartz.scheduler.rmi.registryHost", "localhost");
18+
prop.put("org.quartz.scheduler.rmi.registryPort", "1098");
19+
prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
20+
prop.put("org.quartz.threadPool.threadCount", "5");
21+
//Quartz Server Properties
22+
prop.put("quartz.scheduler.instanceName", "ServerScheduler");
23+
prop.put("org.quartz.scheduler.instanceId", "AUTO");
24+
prop.put("org.quartz.scheduler.skipUpdateCheck", "true");
25+
prop.put("org.quartz.scheduler.instanceId", "NON_CLUSTERED");
26+
prop.put("org.quartz.scheduler.jobFactory.class", "org.quartz.simpl.SimpleJobFactory");
27+
prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
28+
prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.StdJDBCDelegate");
29+
prop.put("org.quartz.jobStore.dataSource", "quartzDataSource");
30+
prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
31+
prop.put("org.quartz.jobStore.isClustered", "false");
32+
//MYSQL DATABASE CONFIGURATION
33+
//If we do not specify this configuration, QUARTZ will use RAM (in - memory) to store jobs
34+
//Once we restart QUARTZ, the jobs will not be persisted
35+
// Configure your MySQL properties
36+
prop.put("org.quartz.dataSource.quartzDataSource.driver", "com.mysql.jdbc.Driver");
37+
prop.put("org.quartz.dataSource.quartzDataSource.URL", "jdbc:mysql://localhost:3306/quartz");
38+
prop.put("org.quartz.dataSource.quartzDataSource.user", "root");
39+
prop.put("org.quartz.dataSource.quartzDataSource.password", "thinkfree");
40+
prop.put("org.quartz.dataSource.quartzDataSource.maxConnections", "2");
41+
SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(prop);
42+
Scheduler scheduler = stdSchedulerFactory.getScheduler();
43+
scheduler.start();
44+
} catch (SchedulerException e) {
45+
e.printStackTrace();
46+
}
47+
}
48+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.advenoh;
2+
3+
import org.quartz.JobDetail;
4+
import org.quartz.Scheduler;
5+
import org.quartz.SchedulerException;
6+
import org.quartz.Trigger;
7+
import org.quartz.impl.StdSchedulerFactory;
8+
9+
import java.util.Properties;
10+
11+
import static org.quartz.JobBuilder.newJob;
12+
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
13+
import static org.quartz.TriggerBuilder.newTrigger;
14+
15+
/**
16+
* todo : connection refused
17+
*/
18+
public class ScheduleJob {
19+
public static void main(String[] args) {
20+
try {
21+
// Create Job
22+
JobDetail job = newJob(TestJOB.class).withIdentity
23+
("jobName", "groupName")
24+
.build();
25+
// Create Trigger
26+
Trigger trigger = newTrigger().withIdentity
27+
("triggerName", "groupName")
28+
.startNow().withSchedule(simpleSchedule()
29+
.withIntervalInSeconds(10)
30+
.repeatForever())
31+
.build();
32+
//Quartz Server Properties
33+
Properties prop = new Properties();
34+
prop.put("org.quartz.scheduler.rmi.proxy", "true");
35+
prop.put("org.quartz.scheduler.rmi.registryHost", "localhost");
36+
prop.put("org.quartz.scheduler.rmi.registryPort", "1098");
37+
prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
38+
prop.put("org.quartz.threadPool.threadCount", "1");
39+
Scheduler scheduler = new StdSchedulerFactory(prop).getScheduler();
40+
scheduler.scheduleJob(job, trigger);
41+
} catch (SchedulerException e) {
42+
e.printStackTrace();
43+
}
44+
}
45+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.advenoh;
2+
3+
import org.quartz.Job;
4+
import org.quartz.JobExecutionContext;
5+
6+
public class TestJOB implements Job {
7+
public void execute(JobExecutionContext context) {
8+
System.out.println("I am JOB, schdule me with Quartz");
9+
System.out.println("Send SMS here");
10+
}
11+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
4+
<Target>System.out</Target>
5+
<encoder>
6+
<pattern>%5p &lt;%d{yyyy-MM-dd HH:mm:ss}&gt;[%C:%L] [%thread] %m%n</pattern>
7+
</encoder>
8+
</appender>
9+
<root level="INFO">
10+
<appender-ref ref="stdout"/>
11+
</root>
12+
</configuration>

0 commit comments

Comments
 (0)