Quartz Introduction

Merhaba arkadaslar, bugün yeni bir yazı dizisinin ilk yazısını yazmaya başlıyorum Başlamak bizden, muvaffakiyet Allah’tan.

Quartz Scheduler Framework

Java’da tanımlanmış görevleri belirlenmiş zamanlanlarda veya zaman aralıklarıyla gerçekleştiren open source bir framework’tur.  Stand alone yada web application’lara uygulanabilir. Quartz ile 1/10/100/1000 vs job oluşturup çalıştırabilirsiniz. Quartz ayrıca enterprise uygulamaları için ek destekler de sunar, bunlar; JTA(Java Trancation Api) ve clustering(küme olarak çalışma).

Quartz’ı job scheduling yani iş zamanlayıcısı olarak aklınızda bulundurmanızda fayda var

Quartz için birkaç jar file ve config dosyası gerekli olucaktır. Bunları giriş yazısında ele almıyacağım ama kısa bir bilgi vermek istiyorum. Gerekli jar file;  quartz, slfj4, log4j uygulamamız içerisinde yer alması gereken jar’lardır. Config dosyası olarak ise quartz.xml ve quartz.properties dosyaları bulunur.

Quartz.xml dosyası job tanımlarının yapıldığı ve yapılacak işlerin ilişkilendirip ne zaman ve hangi aralıklarla vs job çalışacağını belirten xml dosyasıdır.

Quartz.properties dosyası ise Quartzın nasıl çalışacağını, Ram üzerinde mi yada Cluster olarak mı çalışacağını, Thread pool ayalarının yapıldığı, data source vs Job’ların çalışması için gerekli olan config ayarlarının yapıldığı dosyadır.

Bu noktada aklınıza bir konu takılabilir. Core Java içerisinde Timer diye bir özellik zaten mevcut ancak Quartz ile aralarında birkaç fark vardır. Bunlara bakalım;

  • Timer’ın persistance mekanizması yoktur. Timer kalıcı değildir yani.
  • Timer, Quartz’a göre daha kararlı( kelime anlamı olarak dogru degil ) bir yapıdadır. Şöyle ki burada kararlı, esnek olmamaktır. Timer, başlangıç zamanını ve tekrar intervalini alır sadece. Date olarak şu günde çalış yada haftanın şu gününda çalış vs belli zamanlarda çalış gibi bir esnekliği yoktur.
  • Timer Thread pool kullanmaz. Her Timer için bir Thread kullanılır.
  • Timer’ları yönetmek zordur. Taskları tekrar etmek, taskları çağırmak vs gibi kendi management mekanizmasını yazmanız gerekmektedir.

 

Quartz Job’lar, bir Java classının Job intereface’ini implemente etmesiyle bir task/job/iş özelliği kazanmaktadır. Job interfacesi içerisinde tek method bulunur, classımız bu methodu implemente etmesi gerekmektedir.

Örn;

Yukarıda JobTest sınıfımız bir Job’dır. Ve quartz.xml içerisinde tanımı yapılmıştır(yapılmış varsayalım ). Yine quartz.xml içerisinde belirlenen zaman tanımına göre çalışıp çıktı üretecektir.

 

Kısa bir Quartz girisinden sonra yazımı sonlandırmak istiyorum. Sonraki yazılarımızda kısaca şunları yapacağız, ben öyle planlıyorum

  • quartz.xml ve quartz.properties dosyalarını nasıl oluşturacağımızı göreceğiz.
  • Quartz hem cluster ortamda hem de local olarak Ram üzerinde çalışabilir, bunu ayarlamayı göreceğiz.
  • Quartz için Thead pool , data source ve thread count vs gibi ayarlamaları göreceğiz.
  • Bir Job’ı manuel olarak nasıl trigger edebiliriz ona bakacağız.
  • Job için cron expression(zamanlama) nasıl yazıcaz ona değineceğiz.

Yazımız burada bitti arkadaslar, bir sonraki yazıda görüşmek dileğiyle.

Mutlu kalın, kod’la kalın ve bol bol Çay için

~ Alican Akkus

 

 

977 Total Views 2 Views Today