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 konteks Solusi : desain umum dari masalah yang akan diselesaikan dan ditentukan batasannya

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 LTS Debian, version 7 CentOS 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

Import File CSV to PostgreSQL

Database postgresql adalah software database yang open source (gratis), sehingga pencinta database tidak memerlukan uang untuk membayar lisensi (seperti oracle dll.), kecuali uang ke warnet buat download softwarenya ( klik disini ). Postgresql memang mirip dengan database yang lain seperti mysql, oracle, h2, myDB, dan lain-lain. Sehingga user tidak perlu repot untuk menghafalkan banyak query (perintah pemograman dalam database). Pada artikel ini penulis akan menyajikan salah satu fitur dalam database untuk meng- import isi file CSV ke database. File CSV merupakan kumpulan data dalam tabel (excel dll) dengan delimiter (pembatas) berupa karakter. Contoh : Halaman;kebun;kita;bagus;sekali Pada contoh di atas, data csv dibatasi oleh karakter semicolon (;). Sehingga dalam tabel di excel, tiap kolom tabel akan dibatasi oleh delimiter yang kita inginkan. Sekarang kita masuk ke bagian query dalam postgresql. Dalam meng- import isi file CSV ke database di postgresql, hal yang haru