Bu yazımızda; Asp.NET Core uygulamalarında Background Jobs(Arka plan İşleri) gerçekleştirebilmek için bir açık kaynak kütüphanesi olan Hangfire’i inceleyeceğiz. Hangfire; Program sunucuda çalışırken arka planda belli kurallara göre ve belli zamanlarda çalışmasını istediğimiz fonksiyonlar için inanılmaz bir çözüm. Web arayüzü ile baya kullanışlı bir yardımcı kütüphanedir. Sahip olduğu dashboard ile job’larınızı historical olarak görüntüleyebilir, start-stop/restart gibi işlemler yapabilirsiniz.

Öncelikle local Db’de HangFire adında bir database oluşturalım. Database’in user login bilgilerini ayarlıyoruz.

Şimdide TaskWithHangFire adında bir web api projesi açıyoruz. Nuget üzerinden bugün için en güncel olan Hangfire v1.7.4 paketini projemize ekliyoruz.

Oluşturduğumuz database’in connection string’ini application.json dosyasına ekliyoruz.

Hangfire’ı uygulamaya tanıtmamız gerekiyor.Bu kısımda Startup.cs de bulunan ConfigureServices metodu içerisinde Hangfire’ı service olarak ekleyelim ve sonrasında Configure metodu içerisinde bu service’i kullanacağımızı belirten kod bloklarını yazalım.

Yukarıdaki kod bloğunda hangfire database bilgisini vererek uygulamamız service’lerine register ettik ve devamında da hangfire’ın server ve dashboard service’lerini kullanacağımızı belirttik.

Hangfire dashboard default olarak uygulamanın çalıştığı portta’ http://<application>/hangfire adresinde host edilir. Bizde localhostta çalıştığımızdan uygulamayı run edip browser üzerinden http://localhost/hangfire adresine gittiğimizde aşağıdaki gibi hangfire dashboard’u görüntüleyebiliriz.

Uygulama start edildiğinde database’de gerekli tablolar oluşturulmuş mu ? kontrol ediyoruz.

Hangfire konfigurasyonunu tamamladık şimdi sırasıyla Hangfire kütüphanesinde bulunan BackgroundJob sınıfını kullanarak oluşturabileceğimiz job türlerine bakacak olursak;

1- Fire-and-Forget Jobs

Job create edildikten sonra çalışır ve process olur.

2- Delayed Jobs

Belli bir zaman bilgisi set edilerek sadece bir kez çalışmasını istediğimiz task’lar için kullanabileceğimiz job türü. Aşağıdaki gibi Job register olduktan 4 dakika sonra çalışacaktır.

3- Recurring Jobs

Recurring yani tekrar eden task’lar için kullanılan job türü. Örneğin; her saat başı çalışmasını istediğiniz bir job’a ihtiyacınız olduğunda aşağıdaki gibi tanımlayabiliriz.

4- Continuations Jobs

 Parent-child ilişkisinin olduğu yani bir job’ın çalışması için başka bir job’ın tamamlanmasını bekleyip o Complete olduktan sonra çalışmasını istediğimiz işler için kullanabileceğimiz job türü.

Uygulamanızda çalıştırmanız gereken background-task’ları için Hangfire implementasyonunu hızlı bir şekilde yapıp dashboard’u ile birlikte kolayca kullanabilirsiniz. Hangfire’ın muadili olan Quartz.net veya bir queue çözümü de kullanarak işlemlerinizi yapabilirsiniz.Umarım faydalı olmuştur.

Kaynak Kodu

Yararlanılan kaynaklar