Quartz Scheduler: Melewatkan Nilai Ke Job


Jika ada beberapa job yang mengerjakan tugas yang hampir sama, kita dapat menggunakan sebuah class job yang sama, tetapi menerima parameter yang berbeda. Parameter ini nantinya akan di-baca oleh class job melalui getMergedJobDataMap() yang akan mengembalikan JobDataMap yang pada dasarnya adalah sebuah Map.

Sebagai contoh, berikut ini adalah job yang akan membaca parameter “PESAN” dan “SUMBER” dari JobDataMap:

public class TestJob implements Job {

  @Override
  public void execute(JobExecutionContext context)
    throws JobExecutionException {

     JobDataMap jobDataMap = context.getMergedJobDataMap();

     String pesan = jobDataMap.getString("PESAN");
     String sumber = jobDataMap.getString("SUMBER");
     System.out.format("SUMBER [%s] PESAN [%s]\n",
        pesan, sumber);
   }
}

Untuk memberikan nilai pada sebuah job, kita dapat menggunakan getJobDataMap().put() baik pada JobDetail maupun Trigger. Ini adalah contoh kode programnya:

// Membuat scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// Membuat Job Pertama
JobDetail jobDetail1 = new JobDetail("JOB1",
    Scheduler.DEFAULT_GROUP, TestJob.class);
jobDetail1.getJobDataMap().put("SUMBER", "JOB1");
jobDetail1.getJobDataMap().put("PESAN", "Ini Job Pertama");

// Membuat Job Kedua
JobDetail jobDetail2 = new JobDetail("JOB2",
    Scheduler.DEFAULT_GROUP, TestJob.class);
jobDetail2.getJobDataMap().put("SUMBER", "JOB2");
jobDetail2.getJobDataMap().put("PESAN", "Ini Job Kedua");

// Membuat Trigger Setiap 10 Detik
Trigger trigger10 = TriggerUtils.makeSecondlyTrigger(10);
trigger10.setName("Trigger 10 detik");
trigger10.setStartTime(new Date());
trigger10.getJobDataMap().put("SUMBER", "TRIGGER 10 DETIK");

// Membuat Trigger Setiap 1 Detik
Trigger trigger2 = TriggerUtils.makeSecondlyTrigger(2);
trigger2.setName("Trigger 2 detik");
trigger2.setStartTime(new Date());

// Langkah 4: Menjadwalkan Job
scheduler.scheduleJob(jobDetail1, trigger10);
scheduler.scheduleJob(jobDetail2, trigger2);

// Langkah 5: menjalankan Scheduler
scheduler.start();

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: