Nedir bu Quartz.Net ?

Quartz.Net küçük uygulamalardan büyük ölçekli uygulamalara kadar kullanılabilen açık kaynak bir iş planlama sistemidir. Quartz teknik özellikleri ve kolay kullanımıyla da ön plana çıkıyor. Aklınıza gelebilecek birçok zamanlamayı rahatlıkla entegre edebiliyorsunuz.Bunlardan biri de CronExpression. CronMaker üzerinden farklı zamanlayıcılar belirlenebilir.

1 5.732

Quartz.Net ? Belki duyanlarınız vardır ancak duymayanlar için Quartz.Net ( Quartz Enterprise Scheduler .Net ) heyecan verici bir yenilik olacaktır.  Oldukça detaylı bir altyapıya sahip. Quartz’ı tam anlamıyla anlatmak sayfalar dolusu makale anlamına geliyor. Bu nedenle tırnak içinde işimizi görecek kadarından bahsedeceğim.

Nedir bu Quartz.Net ?

Quartz.Net küçük uygulamalardan büyük ölçekli uygulamalara kadar kullanılabilen açık kaynak bir iş planlama sistemidir.  Quartz teknik özellikleri ve kolay kullanımıyla da ön plana çıkıyor. Aklınıza gelebilecek birçok zamanlamayı rahatlıkla entegre edebiliyorsunuz.Bunlardan biri de CronExpression. CronMaker üzerinden farklı zamanlayıcılar belirlenebilir.

Quartz Ayarlar (Configurations)

Visual Studio  Tools > Nuget Package Manager > Package Manager Console üzerniden
Install-Package Quartz ile ilgili kütüphaneyi yükleyebiliriz

Configuration ayarları için farklı seçenekler sunuluyor. 3 başlık altında toplanan bu seçeneklerle genel veya özel ayarlar belirleyebiliyoruz.

  • SchedulerFactory üzerinden NameValueCollection  olarak ayarlar belirlenebilir
  • Uygulamanın config dosyası üzerinden ayarlar belirlenebilir
  • Uygulamanın çalıştığı klasör içinde quartz.config dosyası ile ayarlar belirlenebilir
    (config dosyası kullanılıyor ise VisualStudio üzerinden config dosyasına sağ tıklanıp özellikler bölümünde Copy to Output Directory Copy Always olarak değiştirilmelidir. )
    (configSections tagleri direk olarak configuration altına eklenmeli, üstte element olduğu zaman ConfigurationError hatası alabilirsiniz.)

Quartz Metot ve Interface’lerini tanıyalım

ISchedulerFactory : IScheduler instance ‘ ı almak için kullanılır. GetScheduler adında overload edilmiş method içermektedir. GetScheduler metodu kullanıma hazır schedule’ı döner.  GetSchedule(string)  metodu ise parametreye uygun bir schedule varsa dönüş yapar

StdSchedulerFactory : Quartz.Impl namespace altından gelir , ISchedulerFactory interfaceden türemiştir. StdSchedulerFactory default parametrelerle oluşturulmuş bir sınıftır. Örnek kullanımı aşağıdadır. Aşağıdaki gibi NameValue parametresiyle birlikte veya default constructor ile çağrılabilir.

IScheduler : Job ve Trigger nesneleri yönetilir. IScheduler ISchedulerFactory ‘den türemektedir. Scheduler kavramıyla birlikte ITrigger , IJob kavramlarını da tanımamız gerekiyor.
IJob : Zamanı geldiğinde çalışacak olan yapıya Job  deniyor. IJob interface’inden türemektedir ve IJobDetail nesneleriyle ifade edilir . Scheduler tarafından execute edilir. IJob interface’inin job sınıfına implement edilmesiyle birlikte gelen Execute metodu job’ın çalıştırıldığı metottur. IJobExcutionContext parametresiyle gelir,  bu parametre sayesinde birçok özelliğe erişim ve/veya atama yapabiliriz.
ITrigger :  Trigger ile çeşitli zamanlarda Job’un çalışması sağlanabilir. Bir trigger sadece bir job  tetikleyebilir. Trigger ayarları 4 farklı şekilde yapılabilir
  • WithCalendarIntervalSchedule
  • WithCronSchedule
  • WithDailyTimeIntervalSchedule
  • WithSimpleScheduleBu seçeneklerde öne çıkan WithCronSchedule ve WithSimpleSchedule metotlarıdır.

Trigger Zamanlayıcı Tipi

Eğer belirli bir zamanda tek seferlik tetiklemeler veya aralıklı tetikleme ihtiyacınız varsa WithSimpleSchedule kullanmalıyız

Hafta, gün ,ay, yıl içinde belirli zamanlarda tekrarlanan bir tetiklemeye ihtiyacımız varsa     WithCronSchedule kullanmalıyız. CronMaker link’ini yukarıda bulabilirsiniz.

 

Hadi Zamanlayalım

Şimdi küçük bir örnekle pekiştirme yapalım. Basit bir senaryo ile belirli aralıklarla ekrana mesaj veren bir uygulama yapalım. Uygulamamızda parametreli ve parametresiz olarak job kullanımını örnekleyeceğiz. Aşağıdaki kodlamayı açıklamalarıyla birlikte inceleyebilirsiniz.

 

 

 

Umarım faydalı bir yazı olmuştur.

Referans
CommonInfrastructure
CronMaker
quartz-scheduler.net

 

 

 

1 Comment
  1. Onur ARSLAN says

    Güzel iş, temiz anlatım. Emeğine sağlık dostum.

Email adresiniz yayınlanmayacaktır.