Basit bir örnekle kodlamaya başlayalım. Job interface’ni implement eden MessageJob sınıfını yaratalım. Job interface’i execute() adından tek bir metod içermektedir. JobExecutionContext nesnesine referans olan parametre almaktadır, bu parametre sınıfın tetiklendigi yerden gelen verilere ulaşmamızı sağlar. Vereceğimiz örnekte daha da net anlaşılacağını umuyorum.
StdSchedulerFactory.getScheduler() bize Scheduler instance’ını döndermektedir. Scheduler çalıştırılabilir (start), durdurulabilinir (stop) ya da bekletilebilir (pause) statelerinde olabilir. start() edilerek başlanır. JobDetail sınıfını yaratalım. 3 parametreye gereksinim duyar. Job’ın ismi, Job’ın dahil edilmek istenen grubu ve son parametre ise Class, hangi job sınıfı olduğu. Trigger sınıfını yaratalım, SimpleTrigger veya CronTrigger. Trigger yapılandırıcına geçirilmesi gereken parametreler’e gelelim. Ilk parametre tetikleyicinin adı, ikincisi tetikleyicinin grubu, unutmamak gerekirki tetikleyicinin adı grup içerisinde biricik olmalıdır. 3. parametre ise tetikleyicin hangi zaman dilimlerinde Job’ı tetiklemesidir. Basit anlamda formatı aşağıdaki gibidir. Son olarakta scheduleJob() metodunu çağıralım, parametre olarakta JobDetails ve Trigger nesnelerinin referanslarını sırası ile alır. Vereceğimiz zamanın formatı, yukarıdaki örnek için cronExpression, aşağıda detaylandırıldı.
(1) (2) (3) (4) (5) (6) (7)
1) Saniye (0-59)
2) Dakika (0-59)
3) Saat (0-23)
4) Ayın Günü (1-31)
5) Ay
6) Haftanın günü ( SUN- SAT veya 1-7)
7) Yıl (1970-2099)
Özel Karakterler
* = Herhangi bir değer.
? = Herhangi bir değer yok
- = Aralık belirtmek
/ = 3/5 (3. saniyeden sonra başlayarak her 5 saniyede bir)
, = Listeleme yapmak için
L = Son anlamına gelir, yani ayın son günü
Örnek: 0 0 6 * * Hergün saat 6 AM..
0 0 6 ? * MON Her pazartesi saat 6 AM
3/5 * 14,15,16,17 * * ? Saat 14:00 – 17:59 arasında dakikanın 3. saniyesinden sonra her 5 saniye de bir anlamına gelmektedir.
http://www.opensymphony.com/quartz/
Ref: Pro Spring Rob, Harrop and Jan Machacek
Hiç yorum yok:
Yorum Gönder