Langsung ke konten utama

Quartz Scheduler

Pada umumnya program perangkat lunak yang dijalankan secara reguler membutuhkan aplikasi scheduler dengan range waktu yang dapat ditentukan oleh pengguna. Pada sistem operasi Linux ada aplikasi scheduler secara default yaitu Crontab. Namun, program itu terbatas pada range minimal adalah menit (bukan detik). Pengalaman saya dalam menggunakan program Crontab dalam menjalankan banyak aplikasi java di server, sering mengalami error dan harus menggunakan file execute (.sh) untuk menjalankannya.

Pada artikel ini, saya akan membahas tentang aplikasi Quartz Scheduler. Aplikasi ini merupakan aplikasi open-source yang menjalankan layanan penjadwalan (scheduling service)  yang terintegrasi pada aplikasi kecil yang berjalan sendiri (stand-alone) atau aplikasi besar pada sistem ­e-commerce. Selain itu, aplikasi dikategorikan aplikasi workflow atau aplikasi yang menjalankan job-job secara reguler.


Pada artikel ini, saya menggunakan program Quartz dengan versi 2.1.6 (Dapat download disini) dan dijalankan pada ECLIPSE IDE. Contoh kode quartz untuk program scheduler sederhana adalah sebagai berikut:

package org.ekow.scheduler;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleScheduler {

       public static void main(String[] args) {
              try {
            // Buat instan Scheduler dari kelas StdSchedulerFactory.
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // Jalankan scheduler.
            scheduler.start();

            // Matikan lagi scheduler.
            scheduler.shutdown();

        } catch (SchedulerException se) {
            se.printStackTrace();
        }
       }
}


Contoh kode quartz untuk membuat kelas job (dengan nama HelloJob) adalah sebagai berikut:

package org.ekow.scheduler.job;

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * Job untuk menampilkan kata2 hello world.
 *
 * @author ekowahyudi
 *
 */
public class HelloJob implements Job {

       @Override
       public void execute(JobExecutionContext context)
                     throws JobExecutionException {
              System.out.println("Job: " + new Date());
              System.out.println("\tHello World");
       }

}


Setelah kelas Job dibuat, selanjutnya menambahkan kelas tersebut ke scheduler dan mendefinisikan aturan untuk dijalankan (trigger). Contoh kodenya adalah sebagai berikut:

package org.ekow.scheduler;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

import org.ekow.scheduler.job.HelloJob;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

public class SchedulerWithJob {

       public static void main(String[] args) {
              try {
                     Scheduler scheduler = StdSchedulerFactory
                                  .getDefaultScheduler();
                     scheduler.start();

                     /**
                      * Definisikan job.
                      */
                     JobDetail jobDetail = newJob(HelloJob.class)
                                  .withIdentity("Hello","Test").build();

                     /**
                      * Definisikan trigger dengan interval tiap 10 detik.
                      */
                     Trigger trigger = newTrigger()
                                  .withIdentity("HelloTrigger", "Test")
                                  .startNow()
                                  .withSchedule(simpleSchedule()
                                                .withIntervalInSeconds(10)
                                                .repeatForever()).build();

                     /**
                      * Daftarkan job ke scheduler.
                      */
                     scheduler.scheduleJob(jobDetail, trigger);

              } catch (SchedulerException se) {
                     se.printStackTrace();
              }
       }
}


Hasilnya di console adalah sebagai berikut:

log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Job: Fri Dec 14 21:27:50 ICT 2012
       Hello World
Job: Fri Dec 14 21:28:00 ICT 2012
       Hello World
Job: Fri Dec 14 21:28:10 ICT 2012
       Hello World


Hal yang harus diperhatikan dalam menjalankan quartz di java adalah library jar yang dibutuhkan oleh quartz. Library yang dibutuhkan untuk menjalankan program di atas adalah sebagai berikut:
  • ·         log4j-1.2.16.jar
  • ·         quartz-2.1.6.jar
  • ·         quartz-commonj-2.1.6.jar
  • ·         slf4j-api-1.6.1.jar
  • ·         slf4j-log4j12-1.6.1.jar


Selamat mencoba ^_^.. Kalau ada pertanyaan dapat mengisi form komentar...

Komentar

  1. Mas mau tanya klo membuat 2 jobs bagaimana?
    misalnya jobs schedule pertama dilakukan jam 7.00 untuk baca data pertama, kemudian jobs schedule kedua dilakukan jam 9.00 untuk bersihkan data pertama. Mohon Pencerahannya mas saya masih belajar.

    BalasHapus

Posting Komentar

Postingan populer dari blog ini

Pengenalan Design Pattern di Java

Java merupakan pemrograman yang berorientasi objek dengan interface, abstract, dan class sebagai bentuk dasar dari kode. Seorang programmer java yang ingin mencapai level expert apakah cukup dengan mengetahui prinsip OOP (Object Oriented Programming) ? Jawabannya tidak. Karena ilmu yang harus dipahami selanjutnya adalah Design Pattern dalam membuat kode Java. Design Pattern adalah solusi umum (konteks) terhadap masalah yang sering muncul dalam aplikasi software. Berdasarkan pengertian tersebut, design pattern terdiri dari tiga elemen dasar, yaitu: Konteks: situasi dimana pattern diterapkan (dan biasanya hal ini berulang)Masalah: tujuan atau batasan yang akan dicapai oleh konteksSolusi: desain umum dari masalah yang akan diselesaikan dan ditentukan batasannya

10 Cara Menjadi Programmer yang Expert (Ahli)

Saran saya untuk menjadi programmer yang expert / ahli: Sering dan banyak membuat programMembuat kode program dengan prinsip efisien dan fleksibelMembuat kode program dengan referensi buku yang direkomendasikanSelalu bertanya dalam hati "Mengapa aku harus membuat kode seperti ini?"Bereksperimen dengan kode secara asal-asalanMencari guru/mentor yang lebih pahamMenjadi pembicara atau pengajar dari program yang dipahamiBerhenti coding bila sedang jenuhMenulis kode di bahasa pemrograman lainMenerima opini/masukan yang baik (membangun) dan menolak masukan yang buruk
Semoga bermanfaat guys :)

Instalasi Dataiku DSS (Data Science Studio) Di CENTOS 6.6

Dataiku DSS (Data Science Studio) adalah software untuk mengolah dan menggabungkan Big Data dari data mentah (raw) menjadi data yang bisa digunakan. Aplikasi hanya dapat berjalan di server sebagai berikut:

Server dengan tipe 64 bit (x86-64)Ubuntu Server, versions 12.04 LTS and 14.04 LTSDebian, version 7CentOS versions 6.4 and later (tested up to version 7.0)Red Hat Entreprise Linux Server, versions 6.4 and later (tested up to version 7.0)Amazon Linux, version 2013.09 and later (tested up to version 2014.09