Quartz .Net Core

Merhaba arkadaşlar, bugün Quartz kütüphanesinden bahsederek bir örnek yapacağız.

Quartz nedir?

Quartz, .Net ortamında belirli zamanlarda ve periyotlarda belirlediğiniz aksiyonların alınmasını sağlayan açık-kaynak bir kütüphanedir.

Kendi tanımlamalarıyla “Open-source job scheduling system for .NET” .

lukas-blazek-UAvYasdkzq8-unsplash

Neden İhtiyaç Duyarız?

Yazdığım yazılarda, hangi senaryolarda yazı konusunu kullanabiliriz gibi konulardan bahsetmeyi seviyorum. Quartz için de kullanım amacına değinmek istiyorum.

Örneğin dakika da bir ekrana saati yazan bir uygulamamız olsun. Burada her dakika bu işlemi manuel yönetmek yerine bunu bir joba bağlayarak ve Quartz aracılığıyla da çalışma sıklığını belirterek işin içinden kolayca çıkabiliriz. Yani belirli aralıklarda sürekli olarak yapacağımız işlemler için kullanabiliriz.

Bu arada bu iş için tabii ki Quartz kullanmak şart değildir. Yeni bir uygulama yazarak Windows task scheduler dan taskımızı ayarlayarak da bu işlemi yapabiliriz.

Fakat hem büyük sistemlerde entegre bir şekilde çalışması, hem büyük bir projede bu iş parçacığının yeniden yazılması eforunu gerektirmemesi hem de periyotlarda sağladığı esneklik sayesinde senaryolara göre tercih sebebi olabilir.

sonja-langford-eIkbSc3SDtI-unsplash

Örneğimize başlayalım;

Ben yukarıda belirttiğim “dakikada bir çalışarak saati yazdıran uygulamayı örnek olarak yapacağım.

Örneğin sade ve basit olması için console uygulaması olarak yazacağım. Fakat farklı platformlarda da Quartz kullanabilir, Dependency Injection yapınıza dahil edebilirsiniz.

Bu örnekte VsCode, .Net Core 3.1 ve Quartz.Net (Version 3.2.2) kullanacağım.

Quartz.Net paketimizi Nuget Pacage Manager aracılığıyla yada terminal aracılığıyla projemize dahil edelim.

ShowDateTimeJob sınıfımızı oluşturarak IJob interfacinden kalıtım alıyoruz ve bunun bir job olduğunu bildiriyoruz. Execute komutu içerisinde ise alınmasını istediğimiz aksiyonumuzu belirtiyoruz.

SchedulerSetup sınıfı içerisinde, schedulerımızı üreterek çalışmasını istediğimiz jobımızı konfigurasyonlarıyla birlikte belirtiyoruz.

Burada StartNow ile jobımızın hemen başlayacağını ve Quartz kütüphanesinden faydalanarak Simple Schedule ile periyodumuzu (dakikada bir) belirtiyoruz. Buna alternatif olarak Cron Scheduler da kullanılabilir. Simple Schedule konfigurasyonu daha okunabilir olduğu için bunu tercih ettim.

Commentte belirtilen Cron Scheduler aynı görevi yapmaktadır. Şimdi Main fonkisyonumuzda SchedulerSetup metodumuzu çağıralım ve çıktımıza bakalım.

Ekran görüntüsünde de görüldüğü gibi 1’er dakika arayla ekrana saati yazdıran uygulamamızı Quartz kütüphanesinden faydalanarak oluşturduk. Umarım faydalı olmuştur.

Kaynak Kod => https://github.com/EnesAys/QuartzNetCore

Kaynaklar

https://www.quartz-scheduler.net/documentation/quartz-3.x/packages/aspnet-core-integration.html#installation

https://github.com/quartznet/quartznet

https://blog.vfrz.fr/quartz-asp-net-core-3-0/

http://www.canertosuner.com/post/quartz-net-nedir-nasil-kullanilir1

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir