Asp.NET Core 3.1 Web API – Hangfire Kullanımı

net-core-hangfire

Hangfire Nedir?

Hangfire, uygulamalarımızda arka planda çalıştırmak istediğimiz işleri ( background jobs) yönetebildiğimiz açık kaynaklı bir kütüphanedir. Peki neden böyle bir kütüphaneye gereksinim duyuyoruz. Bunu bir örnek ile açıklayayım. Örnek olarak bir tedarik firmasında ürünlerinizin fiyatlarının yeni ayda değiştiğini düşünelim. Bu değişikliği sizden ürün tedarik eden yüzlerce müşterinize mail göndererek bildirmeniz gerekiyor. Mail gönderim ekranında tüm müşterilerinizi seçip mail göndermeyi başlattığınızda bu yüzlerce mail gönderim işleminin bitmesini beklemek zorunda kalacaksınız. İşte bu ve buna benzer bir iş parçacığının tek bir thread üzerinde yapmak yerine Hangfire ile farklı threat larda ve istediğimiz zamanlarda gönderimini sağlayabiliriz.

ASP.NET Core uygulamalarını yerel olarak geliştirmek ve çalıştırmak için aşağıdakileri indirip yükleyin:

  • Visual Studio Code – adresinden Windows, Mac ve Linux işletim sistemlerinde çalışabilen Microsoft tarafından geliştirilip açık kaynak olarak sunulan kod editörünü indiriniz.
  • C# extension adresinden yada VS Code içersinideki eklentiler bölümünden .NET Core uygulamaları geliştirirken kolaylıklar getiren eklentiyi indiriniz.
  • .NET Core SDK – adresinden .NET Core 3.1 runtime SDK dosyasını indirip kurmalısınız.

Projeye Hangfire Paketlerinin Eklenmesi

Projenin .csproj derleme yöneticisinin içerisinde aşağıdaki şekilde paketleri ekleyebilirsiniz.

Yazının detayına girmeden önce .Net Core ile ilgili en son yazdığım ASP.NET Core 3.1 Web API – Swagger Kullanımı yazımı okuyabilirsiniz. Hangfire kütüphanesini nuget paket yönetiminden aşağıdaki gibi yükleyebiliriz.

Hangfire için Veritabanı Oluşturma

Hangfire yapısı veri ve ayarları saklamak için Redis yada SQL veritabanına ihtiyaç duymaktadır. Bu makalede SQL veritabanı oluşturarak Hangfire kullanımına değineceğim. Öncelikle Hangfire için bir veritabanı oluşturalım

Hangfire Veritabanı Yapılandırılması

Oluşturduğumuz veritabanı için bir bağlantı bilgisi eklememiz gerekmektedir. Bu bağlantı bilgisini appsettings.json içerisinde aşağıdaki şekilde ekliyorum.

Hangfire uyarı mesajlarını farklı bir türde göstermek için aşağıdaki şekilde Logging alanını düzenleyebilirsiniz.

Hangfire Yapılandırılması

Projemizde Hangfire yapılandırma kodlarını yazacağımız “Startup.cs” dosyasında aşağıdaki ayarlamaları yapmamız gerekmektedir.

Hangfire dashboard kullanımı için ApplicationBuilder ayarlarında UseHangfireDashboard() tanımını yapmalıyız.

Yapılandırma sonrasında projemizi çalıştırdığımızda http://localhost:57992/hangfire yolundan Hangfire Dashboard sayfasına erişebiliriz.

Hangfire Background Job Tipleri

Fire and forget jobs : Yapılacak işin belirli bir zamana programlanmadan hemen yapılması ve tekrar etmeden tek bir defa çalıştırılmasını sağlayan background job tipidir.

Delayed jobs : Yapılacak işin belirli bir zaman bitiminde ve bir defa çalışmasını sağlayan background job tipidir.

Recurring jobs : Yapılacak işin bir zaman programına uygun olarak bir çok kez yapılmasını sağlayan background job tipidir. Bu zamanlama işlemlerini  CRON sürecinde (saatlik,günlük,haftalık,aylık, yıllık yada CRON expression vb.) tanımlayabiliriz.

Continuations job: Daha önceden tanımlanan bir işin tamamlanmasından sonra çalışan background job tipidir. Örnekte görüldüğü üzere jobId tamanlanması gereken öncelikli iş tanımıdır. Bu ana iş tamamlandıktan sonra Console.WriteLine(“Continuation!”) işi yerine getirilecektir.

Hangfire kütüphanesinin ücretli bölümünde bulunan Batch (PRO)  ve Batch Continuations (PRO) job türlerini inceleyelim.

Batch (PRO) : Tanımlanan birden fazla işi tek bir grup şeklinde çalıştıran background job türüdür.

Batch Continuations (PRO) : Grup halinde tanımlanan Batch iş tanımlarının tamamlanmasından sonra çalışacak olan background job türüdür.

Detaylı döküman bilgisine buradan ulaşabilirsiniz.

Sosyal medyada paylaşabilirsiniz..

Murat Süzen Hakkında

Tüm yazılarını gör

Bir cevap yazın

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