Lewati ke konten utama

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

  1. Masuk ke dalam dashboard platform.
  2. Klik Create environment.
create environment
  1. Dalam jendela Environment topology, pilih Tomcat sebagai server aplikasi Anda dan konfigurasikan batas cloudlet. Beri nama lingkungan Anda (misalnya, quartz) dan klik Create.
environment wizard

Lingkungan Anda akan siap dalam satu menit.

Buat Aplikasi

  1. 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>
  1. Bangun proyek Anda untuk menyelesaikan ketergantungan.

  2. 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());
}
}
  1. 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";
}
}
  1. Bangun proyek menjadi file WAR.

Deploy Aplikasi

  1. Pergi ke dashboard platform dan unggah file WAR yang telah Anda buat.
upload Quartz archive
  1. Deploy aplikasi ke environment yang Anda buat sebelumnya.
deploy Quartz application
  1. 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.

    Tomcat log

Penjadwalan Quartz sekarang akan menjalankan pekerjaan Anda setiap menit, sesuai konfigurasi.

Baca Juga