cron4j , açık kaynak bir Java kütüphanesi. Java 2 ve sonrası platformlarda çalışıyor. cron4j ile istediğiniz taskları Java kodu içerisinden , çok basit bir şekilde belirleyebildiğiniz kurallara göre çağırabilirsiniz. Üstelik cron4j in zamanlama için kullandığı scheduling pattern(zamanlama şablonu) in söz dizimi The Unix crontab ile tamamen aynı. Peki java.util.Timer varken neden cron4j ? Çünkü java timer ın bize sağlayamadığı bir çok kural var . Java timer ile "bu task ı her 5 dakikada bir çalıştır" ya da "bu task ı şu tarihten itibaren 10 dakikada bir çalıştır" diyebilirsiniz. Ama cron4j ile "bu task ı her çarşamba saat 13.00 te çalıştır" ya da "bu task ı , her ayın 1'inde sadece ayın 1 i hafta içine denk geldiğinde çalıştır" diyebilirsiniz. Scheduling Pattern kullanımı Scheduling Pattern 5 sahadan oluşuyor : "* * * * *" Yıldızlar sırasıyla Dakika , Saat , Ayın günleri , Ay , Haftanın günleri alt sahalarını belirtiyor. Aşağıdaki örnekler sayfalarca açıklamadan daha yararlı olmalı. Bir kaş scheduling Pattern ve açıklamaları : * * * * * - Her dakika çalıştır 5 * * * * - Her saatte bir , saat başını 5 geçe çalıştır (00:05, 01:05, 02:05 gibi) * 12 * * Mon - Pazartesileri , saat 12'de , Her dakika çalıştır (12.00,12.01 ... 12.58,12.59) * 12 16 * Mon - Ayın 16'sı Pazartesiye denk geldiğinde , saat 12'de , Her dakika çalıştır 59 11 * * 1,2,3,4,5 - Pazartesi,Salı,Çarşamba,Perşembe,Cuma günleri , saat 11.59 da çalıştır 59 11 * * 1-5 - bir üstteki pattern in aynısı */5 * * * * - 5 dakikada bir çalıştır 3-18/5 * * * * - Her saatin 3. dakikasından 18. dakikasına kadar ( 18. dakika dahil) , 5 dakikada bir çalıştır (0:03, 0:08, 0:13, 0:18, 1:03, 1:08 ...) */15 9-17 * * * - Her gün saat 9'dan 17'ye kadar (17 dahil), 15 dakikada bir çalıştır. (09.00,09.15,09,30 ... 17.30,17.45) * 12 10-16/2 * * - Ayın 10'u ,12'si ,14'ü ve 16'sında , saat 12 de , Her dakika çalıştır ( 10-16/2 -> 10 ve 16 arası 2 günde bir) * 12 1-15,17,20-25 * * - Ayın 1'i ve 15'i arası (15 dahil) ,ve 17'si ve ,20'si ve 25'i arası(25 dahil) , saat 12 de , Her dakika çalıştır. cron4j ile Pattern leri birbirine de ekleyebilirsiniz : 0 5 * * *|8 10 * * *|22 17 * * * - Her gün saat 05.00'da , 10.08'de ve 17.22'de çalıştır. Bir kaç tane özel gün için schedule pattern verelim (Türkiye'de geçerli) : 0 9 8-14 5 sun - Anneler Günü - Mayıs ayının 2. Pazar günü saat 09.00 da çalış 30 11 15-21 6 sun - Babalar Günü - Haziran ayının 3. Pazar günü saat 11.30 da çalış 30 9 19 5 * - 19 Mayıs Gençlik ve Spor Bayramı - 19 Mayıs saat 09.30 da çalış 30 8 24 11 * - 24 Kasım Öğretmenler günü - 24 Kasım saat 08.30 da çalış 5 9 10 11 * - 10 Kasım Atatürk'ün Ölüm Yıldönümü - 10 Kasım saat 09.05 te çalış Şu an cron4j kütüphanesini istediğimiz takvim ile çalıştırma şansımız yok. Mesela İslam dinine ait özel günler için Hicri takvim kullanma şansımız yok.Ya da Uzak doğudaki bir çok ülkenin ve ulusun kendine has hayvanlı,çok tanrılı , yıl devirli takvimlerinin özel günlerini belirlemek imkansız. Açık kaynaklı bir kod olduğu için böyle bir esneklik eklemek iyi bir fikir olabilir. Gelelim belirlediğimiz scheduling pattern ile task çalıştırmaya... [java] import it.sauronsoftware.cron4j.Scheduler; public class Quickstart { public static void main(String[] args) { // import ettiğimiz scheduler dan bir nesne oluşturuyoruz Scheduler s = new Scheduler(); // çalışmasını istediğimiz bir task'ı , oluşturduğumuz bir pattern ile schedule methoduna veriyoruz. s.schedule("* * * * *", new Runnable() { public void run() { System.out.println("Another minute ticked away..."); } }); // ve scheduler ı başlatıyoruz. s.start(); // Thread sleep ile 10 dakika bekliyoruz try { Thread.sleep(1000L * 60L * 10L); } catch (InterruptedException e) { } // scheduler ı durduruyoruz. s.stop(); } } [/java] Daha ayrıntılı bilgi için : http://www.sauronsoftware.it/projects/cron4j/
Bir cevap yazın