Penjadwalan Tugas Menggunakan Quartz
Quartz adalah layanan penjadwalan tugas sumber terbuka yang dapat diintegrasikan dengan aplikasi Java apa pun. Quartz mendukung jadwal yang sederhana maupun kompleks untuk pelaksanaan tugas seperti pemeliharaan sistem, pekerjaan berulang, atau tindakan berbasis acara. Quartz sangat berguna untuk aplikasi yang memerlukan tugas terjadi pada waktu tertentu atau secara berkala.
Dalam panduan ini, kita akan membahas cara mengatur penjadwal tugas Quartz di cloud.
Buat Environment
- Masuk ke dalam dashboard platform.
- Klik Create environment.
- Dalam jendela Environment topology, pilih Tomcat sebagai server aplikasi Anda dan konfigurasikan batas cloudlet. Beri nama lingkungan Anda (misalnya, quartz) dan klik Create.
Lingkungan Anda akan siap dalam satu menit.
Buat Aplikasi
- Buat aplikasi web berbasis Maven dan tambahkan ketergantungan berikut ke file
pom.xml
Anda untuk memasukkan perpustakaan Quartz:
<!-- Quartz API -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.logging</artifactId>
<version>1.1.1</version>
</dependency>
-
Bangun proyek Anda untuk menyelesaikan ketergantungan.
-
Buat kelas Java baru untuk mendefinisikan pekerjaan Anda. Berikut adalah contoh pekerjaan sederhana yang menampilkan waktu server:
package com;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Server Time: " + new Date());
}
}
- Buat Servlet yang menentukan kapan penjadwalan Quartz akan menjalankan tugas. Dalam contoh ini, tugas mencatat waktu server setiap menit. Berikut adalah kode
QuartzServlet.java
:
package com;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
JobDetail job = new JobDetail();
job.setName("dummyJobName");
job.setJobClass(HelloJob.class);
CronTrigger trigger = new CronTrigger();
trigger.setName("TriggerName");
trigger.setCronExpression("0 */1 * * * ?");
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException | ParseException ex) {
Logger.getLogger(QuartzServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Quartz Scheduler Servlet";
}
}
- Bangun proyek menjadi file WAR.
Deploy Aplikasi
- Pergi ke dashboard platform dan unggah file WAR yang telah Anda buat.
- Deploy aplikasi ke environment yang Anda buat sebelumnya.
-
Buka aplikasi Anda di browser. Arahkan ke servlet Quartz (misalnya,
http://{env_name}.{hoster_domain}/quartz
berdasarkan pemetaan servlet) dan periksa log untuk melihat output eksekusi pekerjaan.
Penjadwalan Quartz sekarang akan menjalankan pekerjaan Anda setiap menit, sesuai konfigurasi.