Hangfire, NET tabanlı bir açık kaynak kütüphanedir Zamanlanmış görevler, arka plan işlemleri ve Windows hizmetleri gibi özellikler kullanarak, belirli bir görevin tekrarlanmasını veya belirli bir zamanda yapılmasını sağlar Hangfire'ın sunduğu özellikler arasında zamanlanmış görevlerin oluşturulması, arka plan işlemlerinin yapılması, paralel görevlerin koordine edilmesi ve kontrol paneli aracılığıyla görevlerin takibi ve yönetimi bulunmaktadır Hangfire, Microsoft teknolojileriyle uyumlu olup, bu teknolojilerle birlikte kullanarak etkinlik ve erişilebilirlik konularında ciddi avantajlar sağlayabilirsiniz Kurulumu oldukça basit olan Hangfire, Windows ve Linux işletim sistemleri için uygun kurulum ortamları sunmaktadır

Hangfire, .NET tabanlı bir kütüphanedir ve zamanlanmış görevler oluşturarak, işleri sıraya dizerek, yönetim paneli aracılığıyla işleri takip etmenizi sağlar. Hangfire, iş yönetimi ve tekrar tekrar çalıştırma işlemlerinde oldukça kullanışlı ve etkilidir. Hangfire'ın temel özelliklerinden bazıları şunlardır:
- Zamanlanmış görevler oluşturma
- İşlerin sıraya dizilmesi
- Kontrol paneli aracılığıyla görevlerin yönetimi
- Yeniden deneme mekanizması ile işlerin tekrar çalıştırılması
Hangfire'ın temel işlevleri, iş yönetimi işlemlerinde oldukça önemlidir ve programınızda zamanlanmış görevler yapmak için oldukça yararlıdır. Ayrıca, farklı ayarlar ile Hangfire'ı iş ihtiyaçlarınıza göre özelleştirebilirsiniz. Bundan sonra, Hangfire'ın ne olduğunu ve nasıl kurulacağını öğreneceğiz.
Hangfire Nedir?
Hangfire, .NET tabanlı bir açık kaynak kütüphanedir. C# ve Visual Basic .NET programlama dilleriyle kullanılabilir. Hangfire, zamanlanmış işler, arka plan işleri veya Windows hizmetleri gibi özellikleri kullanarak, belirli bir görevin tekrarlanmasını veya belirli bir zamanda yapılmasını sağlar.
Hangfire sayesinde, zaman ve kaynak tasarrufu sağlanarak tekrarlanan işlemlerin seyrini takip edebilirsiniz. Hangfire, belirli bir zamanda veya tekrarlanan sıklıklarla görevler oluşturarak sistemdeki yükü azaltır ve hizmetlerin etkinliğini ve erişilebilirliği artırır.
Hangfire, ASP.NET, Web API ve Entity Framework gibi diğer Microsoft teknolojileriyle entegre olabilir. Bu entegrasyonlar sayesinde, Hangfire'ı farklı platformlarda kullanarak çok yönlü bir çözüm elde edebilirsiniz.
Hangfire'ın sunduğu özellikler şunlardır:
- Zamanlanmış görevlerin oluşturulması
- Arka plan işlemlerinin yapılması
- Paralel görevlerin koordine edilmesi
- Kontrol paneli sayesinde görevlerin takibi ve yönetimi
Kısacası Hangfire, .NET geliştiricilerine bir kütüphane aracılığıyla zamanlanmış işleri yönetme, takip etme ve yapma imkanı sunar. Hangfire, Microsoft teknolojileriyle uyumlu olup, bu teknolojilerle birlikte kullanarak etkinlik ve erişilebilirlik konularında ciddi avantajlar sağlayabilirsiniz.
Hangfire Nasıl Kurulur?
Hangfire, web uygulamaları için zamanlanmış görevleri çalıştırmaya yardımcı olan bir açık kaynak kütüphanesidir. Bu yazıda adım adım Hangfire kurulumu ve yapılandırması hakkında bilgi vereceğiz.
Hangfire, .NET platformunda çalışan bir kütüphanedir ve .NET tabanlı web uygulamalarında kullanılabilir. Kurulum işlemi öncelikle Hangfire'ın yüklenebileceği farklı ortamların belirlenmesiyle başlar. Hangfire, Windows ve Linux işletim sistemleri için uygun kurulum ortamları sunmaktadır. Windows için kurulum adımları ile başlayalım.
Windows işletim sistemi için Hangfire kurulumu yapmak için öncelikle, Hangfire'ın kullanılacağı web uygulamasını Visual Studio'da açmalısınız. Daha sonra NuGet Gallery'den Hangfire'yı yüklemeniz gerekmektedir. Bu işlem için, Visual Studio üzerinde sağ tıkladıktan sonra "NuGet Paket Yöneticisi" seçeneğini seçin.
Yeni sayfada 'Ara' sekmesini kullanarak "Hangfire" aramasını yapın ve arama sonuçlarından uygun olan paketi seçin. Daha sonra yüklenen paketin çalışabilmesi için, web.config dosyasında aşağıdaki adımları takip ederek gerekli ayarları yapmanız gerekmektedir:
- appSettings etiketinin içinde aşağıdaki kodu ekleyin:
- Ve </configuration> etiketinden önce aşağıdaki kodları ekleyin:
- Daha sonra, Global.asax.cs dosyasına aşağıdaki kodları ekleyin:
<add key="HangfireConnectionString" value="Data Source=.;Initial Catalog=Hangfire;Integrated Security=True;" />
<connectionStrings> <add name="Hangfire" connectionString="Data Source=.;Initial Catalog=Hangfire;Integrated Security=True;" providerName="System.Data.SqlClient" /></connectionStrings>
using Hangfire;using Hangfire.SqlServer;public class WebApiApplication : System.Web.HttpApplication{ protected void Application_Start() { GlobalConfiguration.Configuration.UseSqlServerStorage( "Hangfire"); Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire"); BackgroundJob.Enqueue(() => Console.WriteLine("Hello world from Hangfire")); }}
Kurulumu tamamladıktan sonra Hangfire kontrol panelini açmak için, Visual Studio'da "Tools" menüsüne gidin ve "Hangfire Dashboard" seçeneğini seçin. Artık Hangfire'ı kullanmaya hazırsınız!
Linux işletim sistemi için Hangfire kurulumu da oldukça basittir. İlk adım olarak, Hangfire'ın NuGet paketini yükleyin. Bunun için konsola aşağıdaki kodu yazın:
dotnet add package Hangfire.Core
Sonrasında, Hangfire'ın çalışabilmesi için gerekli olan diğer kütüphaneleri de yükleyin:
dotnet add package Hangfire.AspNetCoredotnet add package Hangfire.MemoryStorage
Daha sonra, Hangfire'ı kullanacağınız class'a aşağıdaki kodları ekleyin:
public void ConfigureServices(IServiceCollection services) services.AddHangfire(configuration => configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseMemoryStorage()); }); services.AddHangfireServer();
Hangfire için PostgreSQL veritabanı kullanacaksanız, aşağıdaki kodları da ekleyin:
services.AddHangfire(configuration => configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UsePostgreSqlStorage(Configuration.GetConnectionString("HangfireConnection")));});
Yapılandırma işlemini tamamladıktan sonra Hangfire'ı kullanabilirsiniz. Kurulum işlemi başarılı bir şekilde tamamlanmıştır!
Hangfire Kurulumu
Hangfire, .NET dilinde zamanlanmış işlerin oluşturulması ve yönetimi için kullanılan bir araçtır. Hangfire kurulumu oldukça basittir ve farklı ortamlarda yüklenebilir. Öncelikle, Hangfire'ı kullanmak için projenize NuGet üzerinden birkaç hızlı adımla yükleyebilirsiniz.
Aşağıdaki adımları takip ederek Hangfire'ı yükleyebilirsiniz:
Adım 1: | Visual Studio IDE'yi açın. |
Adım 2: | Projenizdeki NuGet Package Manager'ı açın. |
Adım 3: | Hangfire aramasını kullanarak Hangfire.EntityFramework veya Hangfire.SqlServer paketlerinden birini yükleyin. |
Hangfire, hem Windows hem de Linux işletim sistemleri üzerinde çalışabilir. Farklı işletim sistemleri için kurulum adımları şöyledir:
- Hangfire'ın yükleneceği Visual Studio Projesini açın.
- NuGet üzerinden Hangfire.SqlServer veya Hangfire.EntityFramework paketlerinden birini yükleyin.
- Projeye service.AddHangfire (, Hangfire.JobStorage.Current)
- Projeye .AddHangfireServer() ekleyin.
- Başlangıç sınıfını projeye ekleyin. Hangfire yüklendiği zaman hangfire ayağa kalkacaktır.
- SSH bağlantısı ile sunucuya erişin.
- Ubuntu için Projenize Hangfire.SqlServer veya Hangfire.EntityFramework paketlerinden birini yükleyin.
- Hangfire servisiyle ilgili yapılandırmaları yapın.
- Hangfire arayüzüne erişim için firewall yapılandırması yapın.
- Kurulum tamamlandıktan sonra, Hangfire'ı çalıştırmak için, "dotnet hangfire.dll" komutunu kullanın.
Hangfire'ı kurduktan sonra, .NET projenizde zamanlanmış görevleri kolaylıkla yönetebilirsiniz. Bu sayede, özellikle tekrar eden ve zaman alıcı olan görevleri ve işlemleri otomatik hale getirerek zaman ve kodlama yapısında verimlilik sağlayabilirsiniz.
Windows'a Hangfire Kurulumu
Hangfire, .NET tabanlı bir yazılım olduğu için öncelikle .NET yüklü bir Windows işletim sistemi gerektirir. Hangfire yükleme işlemi iki basit adımda tamamlanır.
Hangfire paketlerini yükleme işlemi için öncelikle Visual Studio paket yöneticisi kullanılmalıdır. Projeye sağ tıklayarak paket yöneticisine girin ve arama kısmına Hangfire
yazarak ilgili paketleri yükleyin. Hangfire paketlerinin yüklenmesi için aşağıdaki kodu konsola yazabilirsiniz:
Paket Yükleme Kodu: |
---|
Install-Package Hangfire.Core -Version 1.7.17 |
Install-Package Hangfire.AspNetCore -Version 1.7.17 |
Install-Package Hangfire.SqlServer -Version 1.7.17 |
Hangfire paketlerini yükledikten sonra, gerekli ayarlamaları yapmak için Startup.cs dosyasına gidin. Gerekli eklemeleri yaptıktan sonra Hangfire'ı kullanabilmeniz için aşağıdaki kodları ekleyin:
app.UseHangfireServer(); //Hangfire sunucusunu başlatır
app.UseHangfireDashboard(); //Hangfire panosunu başlatır
Yukarıdaki adımları takip ettikten sonra, Hangfire kurulumunuz tamamlanmış olacaktır ve zamanlı işlerinizi başlatmaya hazırsınız.
Linux'a Hangfire Kurulumu
Linux işletim sistemleri için Hangfire kurulumu oldukça kolaydır. İlk olarak, Hangfire'ın .NET Core sürümünü Linux'a kurmanız gerekir. Bunun için, .NET Core indirme sayfasına gitmelisiniz. Burada, .NET Core sürümünüzü seçmelisiniz. Kurulum dosyalarını ve yönergelerini içeren bir sayfaya yönlendirileceksiniz.
Sonra, Hangfire'ın konsol uygulamasını çalıştırmak için bir terminal açmalısınız. Terminalde, aşağıdaki komutu yazarak Hangfire yükleyicisini yükleyebilirsiniz:
dotnet tool install --global Hangfire.Console
Bu komut, Hangfire konsol uygulamasını sisteminize yükleyecektir. Daha sonra, bir .NET uygulaması içinde Hangfire'ı kullanabilirsiniz.
Bu aşamadan sonra Hangfire kullanmaya hazırsınız. Hangfire'ı .NET uygulamanıza yükledikten sonra, kodunuz doğru şekilde yapılandırıldığından emin olun. Linux üzerinde Hangfire'ı kullanmanın deneyimli bir yazılımcı için oldukça kolay olduğunu belirtmekte fayda var.
Hangfire Yapılandırması
Hangfire, yazılımın bazı özelliklerini ayarlamak için bir dizi seçenek sunar. Bu seçenekler, belirli işlerin ne zaman çalışacağı, Hangfire'ın kullanacağı veritabanı türü ve daha fazlası gibi şeyleri içerir.
- Hangfire Ayarları: Hangfire'ın ayarları, web uygulamasının başlangıcında yapılandırılır. Yönetim paneli, sunucular ve diğer ayarların hepsi bu ayarlar altında yer alır.
- Hangfire Kontrol Paneli: Hangfire'ın kontrol paneli, yapılandırmanın bir parçasıdır ve senkronize edilmiş görevlerin durumunu izleyebilir, önbelleği temizleyebilir, fonksiyonları ve daha fazlasını çalıştırabilirsiniz.
- Özel Arka Uçlar: Hangfire, önceden yapılandırılmış birkaç arka uçla birlikte gelir, ancak özel iş mantığı için kendi arka uçlarınızı da ekleyebilirsiniz.
- Veritabanı Ayarları: Hangfire, varsayılan olarak SQL Server'a yerleşik bir destek sunar, ancak normal bir SQL veritabanı kullanarak da uyumlu olabilirsiniz. Ayarlar dosyası içinde belirtilen bağlantı dizesi, Hangfire'ın veritabanına bağlanmasını sağlar.
Hangfire'ı yapılandırmak için, projenizin appsettings.json dosyasına ihtiyacınız olacak. Bu dosya, sistem özellikleri ve kimlik doğrulama bilgileri de dahil olmak üzere birçok yapılandırma bilgisi içerebilir.
Hangfire'ı yapılandırmak için kullanabileceğiniz birkaç örnek ayar şunlardır:
Ayar Adı | Açıklama |
---|---|
Hangfire:JobStorage | Hangfire'nin hangi veritabanı türünü kullanacağını belirler. Bu ayar varsayılan olarak SQL Server olarak ayarlanmıştır. |
Hangfire:Dashboard | Hangfire yönetim panelinin hangi URL'de yer alacağını belirler. |
Hangfire:WorkerCount | Hangfire'da Hangfire işlerini eşzamanlı olarak çalıştıracak işçi sayısını belirler. |
Hangfire'ı yapılandırdıktan sonra, web uygulamanıza entegre etmek açısından yapılandırmaları doğru ayarlamak önemlidir. Bu, zamanlanmış işlerin doğru çalışmasını sağlar ve Hangfire'ın belirtilen görevleri zamanında gerçekleştirebilmesini mümkün kılar.
Hangfire Ayarları
Hangfire, farklı ayarlarla yapılandırılabilen bir araçtır. Hangfire'ın kullanımı için ilk olarak, Hangfire'ı yapılandırmak gerekiyor. Daha sonra, Hangfire'ın ayarlarına göre zamanlı işler yapılabilir.
Hangfire ayarları, Hangfire'a birçok farklı özellik kazandırır. Örneğin, Hangfire'ın kullanım süresi ve işlemci kullanımı ayarlanabilir. Bu sayede, Hangfire ile yapılan işlemler daha verimli hale getirilir.
Hangfire ayarları ile ilgili bazı örnekler;
Ayar Adı | Açıklama |
---|---|
Worker Count | Hangfire'ın istenen işlemci sayısını belirler |
Heartbeat Interval | Hangfire'ın çekirdeğinin ne sıklıkla yenilenmesi gerektiğini belirler |
Server Timeout | Hangfire'ın boşta kalmadan ne kadar süre sonra tekrar başlatılması gerektiğini belirler |
Bu ayarlar, Hangfire'ın daha verimli çalışmasını sağlayabilir. Hangfire'ın ayarlarını yapmak ise oldukça kolaydır. Hangfire'ın kullanımına başlamadan önce, ayarlarının yapılandırılması gerekmektedir.
Hangfire ayarlarının yapılandırılması için;
- BackgroundJobServerOptions: Bu sınıf, Hangfire ayarlarını içerir. Bu sınıf temsil edilirken, yapılandırma ayarları bu nesne üzerinden yapılır.
- UseSqlServerStorage: Hangfire'ın SQL Server'a kaydedilmesi için kullanılır. Bu sınıf depolanacak SQL Sunucusu'nu belirler.
- UseHangfireServer: Hangfire sunucusunu belirlemek için kullanılır.
Bu işlemler tamamlandığında, Hangfire ayarları yapılabilir hale gelir. Hangfire ayarları ile işlemler daha verimli ve daha hızlı hale getirilebilir.
Hangfire Kontrol Paneli
Hangfire kontrol paneli, Hangfire'ın kullanımını daha da kolaylaştıran bir arayüzdür. Bu panelden, Hangfire'ın sunduğu birçok özellik ve bilgiye kolayca erişebilirsiniz. Hangfire kontrol paneline tarayıcınızın adres çubuğuna "localhost:port/hangfire" yazarak ulaşabilirsiniz.
Hangfire kontrol panelinde, işlerin durumlarını, zamanlamalarını, başarı ve başarısızlık durumlarını takip edebilirsiniz. Ayrıca, bu panelde, farklı işler oluşturabilir, yönetebilir, düzenleyebilir ve silme işlemlerini gerçekleştirebilirsiniz.
Hangfire kontrol paneli size ayrıca, uygulamanızın çalışma zamanı verilerini ve durumunu da gösterir. Bu verilerle, uygulamanızın performansını ve güncel durumunu da takip edebilirsiniz.
Hangfire kontrol paneli, farklı özellikleri ve iletileri de gösterir. Paneldeki iletiler, Hangfire'ın çalışması sırasında ortaya çıkan uyarı ve hata mesajlarıdır. Bu mesajlar, sorunları çözmede size yardımcı olabilir.
Hangfire kontrol panelinin yanı sıra, Hangfire'ın yönetim arayüzü olarak da bilinen Dashboard'ı da kullanabilirsiniz. Dashboard, tarayıcınızda çalışan hangfire sunucusunun gösterdiği, Hangfire'ın sağladığı tüm bilgilere daha görsel bir şekilde ulaşmanıza olanak tanır.
Hangfire kontrol paneli ve Dashboard gibi araçlar Hangfire'ın kullanılabilirliğini ve yönetimini oldukça kolaylaştırır. Hem işletme hem de geliştirme süreçlerinde, zamanlanmış işlerin takibi ve yönetimi için büyük bir kolaylık sağlayarak, iş yükünü hafifletir.
Hangfire Kullanarak Zamanlanmış İşler Yapmak
Hangfire, güçlü bir zamanlanmış iş kütüphanesi olarak işlev görür ve .NET ortamında kullanılan bir araçtır. Hangfire kullanarak, özellikle belirli bir zamanda veya bir işlem tamamlandığında çalıştırılabilen farklı işleri planlayabilirsiniz.
Hangfire kullanarak zamanlanmış işler yapmak oldukça kolaydır. Bunun için öncelikle Hangfire'ın yüklü olduğu projenizin var olduğundan emin olmalısınız. Ardından, IBackgroundJobClient arayüzünden faydalanarak yaptığınız işi sıraya koyabilir ve zamanlama seçeneklerini belirleyebilirsiniz.
Hangfire ile yaptığınız zamanlanmış işler, farklı senaryolara uygun olarak özelleştirilebilir. İsterseniz zamanlama işlemlerini yalnızca belirli bir zaman diliminde yapabilirsiniz, isterseniz de belirli bir düzene göre işlerinizi çalıştırabilirsiniz. Bunun yanı sıra, özellikle birden fazla sunucuda çalışıyorsanız, belirli bir sunucuda çalışacak zamanlanmış işler de ayarlanabilir.
Örneğin, bir e-posta gönderme sisteminiz varsa ve belirli tarihlerde farklı kampanyaları gerçekleştirmek istiyorsanız, Hangfire'ı kullanarak işlerinizi önceden planlayabilirsiniz. Bunun yanı sıra, farklı durumlarda farklı işlemler yapmanız gerektiğinde de Hangfire kullanarak işlerinizi kolayca zamanlayabilirsiniz.
Hangfire ile zamanlanmış işler yapmak son derece kolay olduğundan, büyük şirketlerde bile veri işlemek gibi zahmetli işlerin kolayca yürütülmesi mümkün hale gelir. Ayrıca, yapılacak düzenlemeler veya değişiklikler oldukça kolayca yapılabildiğinden, iş verimliliği de artmış olur.
Sonuç olarak, Hangfire ile yapılan zamanlanmış işler, kolay yapısı, özelleştirilebilir olması ve iş akışını optimize edebilmesi gibi avantajlar sağlamaktadır. Bu nedenle, farklı iş projelerinde kolayca kullanılabilir ve verimlilik artırma konusunda oldukça etkili olabilir.
Hangfire İş Sıralaması
Hangfire, .NET platformunda yer alan açık kaynak bir araçtır. Bu araç, planlanmış işlemlerin (zamanlanmış işler) yürütülmesi için kullanılır. Bu yazılım, işlerin arka plan işlemci tarafından çalıştırılmasını sağlar ve asenkron işlemleri kolaylaştırır. Hangfire, görevleri sıraya sokabildiği için, bu yapı planlanmamış istekleri yol açmadan karşılayabilmesi için verimliliği arttırmak için kullanılır.
Hangfire, ".NET Core" yoluyla yapılandırılan bir projede kullanılabilir. Hangfire'ın bir özelliği de tekrarlayan işleri yürütebilmesidir. Örneğin, her saatte bir veritabanı yedeklemesi yapmak gibi tekrarlanan işleri kolayca çalıştırabilirsiniz. Bunun yanı sıra, Hangfire, işlerin geçmişini takip edebilir ve işlerin ne kadar sürede tamamlandığını gösterebilir.
Hangfire IBackgroundJobClient, Hangfire'ın yürüttüğü en temel birimdir. Bu birim, bir işi yürütmek için kullanılır. IBackgroundJobClient aracılığıyla, Hangfire'a bir iş eklenebilir. İş, kontrol panelindeki sıralı liste halinde görünecektir. IBackgroundJobClient, iki parametre alır: ilki, çalıştırılacak iş tipi, ikincisi, işin parametreleridir. Aşağıdaki kod bloğu, "myJob" adlı bir iş ekleme örneğidir.
BackgroundJobClient client = new BackgroundJobClient();client.Enqueue(x => x.Run(param1, param2));
Hangfire Schedule, Hangfire'ın bir diğer temel birimidir. Bu birim, belirli bir tarihte veya periyodik olarak yürütülecek işleri kolayca ayarlamak için kullanılır. Schedule ile, Hangfire'a bir görev programlanabilir ve kontrol panelindeki sıraya eklenir. Hangfire'ın AspNetCore uyumlu uygulamasından “Schedule” kullanılarak bir iş programlama örneği aşağıdaki gibi olabilir.
RecurringJob.AddOrUpdate(() => MyJob.Run(), Cron.Daily);
Hangfire PerformContext, Hangfire işleyicilerinde kullanılan bir parametredir. Bu parametre, işin çalıştırıldığı ortama ilişkin bilgi sağlar. Bu bilgi, Hangfire tarafından toplanır ve aşağıdaki özellikleri sağlayabilir:
- Jetonlar
- Sıralar
- Muhafaza alanı
PerformContext, aşağıdaki gibi bir işlevsellik sağlayabilir.
public void MyJobMethod(PerformContext context){ var jobId = context.BackgroundJob.Id; var enqueuedAt = context.BackgroundJob.EnqueuedAt; // iş kodları burada // iş tamamlandığında hangfire'a bildiriyoruz context.BackgroundJobClient.Complete(jobId);}
Hangfire PerformContext, işlerin arka planda nasıl işlediğine veya diğer yönlerine bağlı olarak farklı hesaplamalar yapmak için kullanılabilir.
Hangfire IBackgroundJobClient Kullanımı
Hangfire IBackgroundJobClient, Hangfire'ın iş sıralaması yapısını kullanarak zamanlanmış işler oluşturmamızı sağlayan bir sınıftır. Bu sınıfın kullanımı oldukça basittir ve Hangfire'ın sunduğu güçlü özellikleri kullanarak zamanlanmış işlerimizi kolayca yönetebiliriz.
IBackgroundJobClient sınıfını kullanarak zamanlanmış bir iş oluşturmak istiyorsak, öncelikle IBackgroundJobClient nesnesini oluşturmamız gerekiyor. Bunun için, aşağıdaki örnek kod bloğunu kullanabiliriz:
IBackgroundJobClient backgroundJobClient = new BackgroundJobClient();
Ardından, aşağıdaki gibi zamanlanmış bir iş oluşturabiliriz:
backgroundJobClient.Schedule(() => Console.WriteLine("Merhaba dünya!"), TimeSpan.FromSeconds(10));
Bu kod bloğu, "Merhaba dünya!" satırını 10 saniye sonra konsol ekranında yazdıracaktır. İşlerin zamanlanması için TimeSpan sınıfından yararlanılmıştır.
Bunun yanı sıra, aynı anda birden fazla işi zamanlamak da mümkündür. Örneğin, aşağıdaki kod bloğu ile iki farklı iş oluşturabiliriz:
backgroundJobClient.Schedule(() => Console.WriteLine("İlk iş!"), TimeSpan.FromSeconds(10));backgroundJobClient.Schedule(() => Console.WriteLine("İkinci iş!"), TimeSpan.FromSeconds(20));
Bu kod bloğu, "İlk iş!" satırını 10 saniye sonra, "İkinci iş!" satırını ise 20 saniye sonra konsol ekranında yazdıracaktır.
IBackgroundJobClient sınıfının sunduğu diğer bir özellik de zamanlanmış işleri iptal etme imkanıdır. İptal edilecek işin ID'sini kullanarak aşağıdaki kod bloğu aracılığı ile işimizi iptal edebiliriz:
backgroundJobClient.Delete(jobId)
Yukarıda gördüğümüz örnekler IBackgroundJobClient sınıfının kullanımına dair örneklerdir. Hangfire, kullanıcıların ihtiyaçlarına göre iş akışlarını daha da kişiselleştirmek için farklı sınıflar ve özellikler sunar.
Hangfire Schedule Kullanımı
Hangfire'ın en önemli özelliklerinden biri planlamadır. Hangfire Schedule ile zamana göre tekrarlanan işler kolayca yapılabilir. Schedule() yöntemi kullanılarak işler ne kadar zamanda bir çalıştırılacağı belirtilir. Iş çıktısı da belirtilir ve bu çıktı daha önceden planlama yapılıp yapılmadığını kontrol etmek için kullanılabilir. Bu yöntem, özellikle periyodik olarak çalıştırılması gereken işler için oldukça kullanışlıdır.
Aşağıda Hangfire Schedule kullanımı ile ilgili bir örnek görülmektedir:
Iş Adı | Planlama | Iş Çıktısı |
---|---|---|
SendEmail | Hangfire.Schedule(() => SendEmail(), TimeSpan.FromMinutes(30)); | Email gönderildi mi? |
Hangfire Schedule kullanırken, TimeSpan nesnesi oluşturarak işin ne kadar süre sonra yapılacağı belirtilir. Bu nesneye örnek olarak FromSeconds(), FromMinutes(), FromHours() gibi farklı seçenekler verilebilir. Böylece, işin kaç saniyede, dakikada veya saatte bir yapılacağı belirlenir. Ayrıca, Cron formatı kullanılarak da istenilen zamanlama yapılabilmektedir. Bu formatta, işin hangi haftanın hangi günlerinde ve saatlerinde yapılacağı ayrıntılı olarak belirtilir. Hangfire Schedule yöntemi, zamanlama ve periyodik işler için oldukça kullanışlı bir yöntemdir.
Hangfire PerformContext Kullanımı
Hangfire PerformContext Kullanımı
Hangfire PerformContext, Hangfire işlemlerinin yürütüldüğü anahtar noktalardan biridir ve işin özetini, işlem süresini ve benzersiz tanımlayıcısını içeren bir yapıdır. PerformContext kullanarak, Hangfire işlemlerinde farklı senaryolar uygulamak mümkündür. Örnek olarak:
- Önceden verilen bir işe özel bilgi eklemek (İş Açıklaması)
- Hangfire IsBackground özelliği kullanarak Hangfire işlemlerinin öncelik seviyesini belirlemek
- Hangfire PerformContext kullanarak, uygulama ayarlarına erişmek veya diğer kaynaklara bağlanmak
PerformContext, birkaç yöntemle erişilebilen Hangfire içinde bir bileşen olduğundan, Hangfire işlemlerinde ek bilgilere erişmek için kullanılabilir. Ayrıca, PerformContext yapısı, gerekli bilgileri göndermek için gerektiğinde kullanılabilir.
Bu nedenle, PerformContext kullanarak, verileri çekmek ve Hangfire görevleri tarafından yürütülen işleri kişiselleştirmek mümkündür. Hangfire PerformContext kullanarak yapılan işlemler, daha önce belirlenen süreçler ile birleştirildiği için daha doğru ve verimli olacaktır.
Hangfire PerformContext Nedir?
Hangfire, birden fazla arka plan görevini asenkron olarak yürütebilmenizi sağlayan bir araçtır ve PerformContext, Hangfire görevlerini yürütmek için kullanılan bir arabirimdir. Hangfire, performans düzeyiniz arttıkça azalan iş yükü nedeniyle zamanla zarar görebilir. Bu nedenle, PerformContext, Hangfire görevlerindeki iş yükünü azaltmak için kullanılır.
PerformContext'un avantajlarından biri, birden fazla Hangfire görevini yürütmek için kullanılabilmesidir. Ayrıca, Hangfire görevlerindeki önbellek sıfırlama işlemleri gibi yineleyen işlemlerin otomatikleştirilmesine yardımcı olabilir. PerformContext, Hangfire görev yönlendirmeleri, parametreler, izleme bilgileri ve çalışma zamanı bilgileri gibi çeşitli bilgiler de sağlayabilir.
Hangfire PerformContext Kullanımı Örnekleri
Hangfire'da PerformContext, işin gerçekleştirildiği arka planda bir komut satırı arayüzü gibi düşünülebilir. Hangfire PerformContext kullanarak, bir işin işlemi sırasında birçok türde erişilebilir bilgi sağlanabilir. Hangfire PerformContext öğesi, işin hangi uygulama havuzu tarafından çalıştırıldığını belirlemek için kullanılabilir ve gerektiğinde oturum açan kullanıcının bilgilerine erişim sağlar. Hangfire PerformContext ayrıca, işin durumu veya hata ayrıntıları gibi işle ilgili ayrıntıları bir günlüğe kaydetmek için de kullanılabilir.
Örnek olarak, bir web uygulamasında belirli kullanıcılara e-posta gönderme işlemini başlatmak isteyebilirsiniz, ancak belirli bir kullanıcının gönderiminde bir hata oluşursa, bahsedilen kullanıcının kimliği ve hata ayrıntıları loglama işleminde kullanılabilir. Bunun yanı sıra, PerformContext, belirli bir işle ilgili ayrıntılı bilgiler sağlamak için kullanıcıya da yardımcı olabilir.
Örnek Kod: | var jobId = BackgroundJob.Enqueue(() => SendEmail(UserId, EmailAddress, new PerformContext())); |
---|
Yukarıdaki kod örneğinde, PerformContext kullanılarak bir iş, işleme alınırken belirli bir kullanıcının e-posta adresine yönlendirilir. PerformContext, kullanıcının kimliği gibi ek bilgileri içeren bir sınıf örneği olarak görev işleyici yöntemine de gönderilebilir.
Özet olarak, Hangfire PerformContext kullanarak, bir işin gerçekleştirilmesi sırasında belirli bir uygulama havuzu, kullanıcı kimlik bilgileri, işlem durumu ve hata ayrıntıları gibi çeşitli ayrıntıları takip etmek mümkündür. Bu sayede hata ayıklama ve performans izleme işleri yapılırken daha ayrıntılı bilgi sağlanabilir.
Hangfire Avantajları ve Dezavantajları
Hangfire, zamanlanmış işleri yönetmek için oldukça faydalı bir kütüphanedir. Bu kütüphanenin avantajları ve dezavantajları hakkında bilgi sahibi olmak, Hangfire kullanıcıları için önemlidir.
Hangfire'ın avantajlarından biri, işlerin arka plana alınabilmesidir. Bu sayede, kullanıcının ana işlemi kesintiye uğramadan arka tarafta başka işler yapılabilir. Ayrıca, Hangfire özel bir veritabanı kullanarak işlerin takibini yapar, bu sayede oluşabilecek hataların nedeni kolayca izlenebilir. Hangfire ayrıca, bir işin yeniden çalıştırılabilmesini sağlar. Böylece, hatalı işlerin yeniden çalıştırılması mümkündür.
Bir başka avantajı, Hangfire'ın esnekliğidir. Bu kütüphane, birçok farklı işlemi yönetebilir ve kurulumu oldukça kolaydır. Hangfire, birçok farklı uygulama tarafından kullanılabilir. Hangfire'ın avantajlarından bir diğeri de, işlerin kolejler halinde çalıştırılabilmesidir. Bu sayede, işler daha organize bir şekilde yapılabilir.
Ancak, Hangfire'ın dezavantajları da bulunmaktadır. Örneğin, Hangfire'ın arka tarafta çalışan işleri yönettiği için, işlemciyle birlikte bellek kullanımı da artabilir. Bu nedenle, Hangfire daha yavaş bir uygulama yapabilir. Ayrıca, Hangfire, veritabanını kullanarak işlerin takibini yapar. Bu nedenle, veritabanı sorunları yaşanabilir ve uygulama daha yavaş çalışabilir.
Sonuç olarak, Hangfire, başarılı bir şekilde zamanlanmış işleri yönetmek için kullanışlı bir kütüphanedir ancak, avantajları ve dezavantajları dikkate alınarak kullanılmalıdır. Hangfire kullanıcısı olarak, bu avantaj ve dezavantajlardan haberdar olmak, daha sağlıklı bir kullanım sağlayabilir.
Advantajları
Hangfire, diğer zamanlanmış iş yöneticilerine kıyasla birçok avantaj sağlar. Bunlardan bazıları şunlardır:
- Kullanımı Kolay: Hangfire, çok kolay bir kullanıcı arayüzüne sahiptir. Kullanımı kolaydır ve diğer tüm işlemler için sadece birkaç tıklama gerektirir.
- Yüksek Performanslı: Hangfire, yüksek performanslı işler yapmak için tasarlanmıştır. Bu sayede performansları artar ve iş süreleri daha hızlı tamamlanır.
- Belirli Sürelerde Çalıştırma: Hangfire, belirli günlerde, saatlerde, dakikalarda veya saniyelerde otomatik olarak çalıştırılabilen zamanlayıcı özelliklere sahiptir.
- Ölçeklenebilir: Hangfire, büyük ölçekli uygulamalar için tasarlanmıştır ve yüksek trafikli uygulamalarda bile istikrarlı bir şekilde çalışır.
- Veri Depolama: Hangfire, Microsoft SQL Server, Redis ve Azure gibi yaygın veri depolama sistemlerini destekler.
- Güvenli: Güvenlik, Hangfire için büyük bir endişe değildir. Bu nedenle, Hangfire'ın diğer farklı araç ve modülleriyle birlikte sıklıkla kullanılabilir.
- Esnek: Hangfire, birden fazla platfor mu destekler. Bu sayede, Hangfire kullanarak farklı platformlarda çalışabilen farklı özellikler ile uygulamalar oluşturmak mümkündür.
Hangfire'ın bu avantajları, geliştiricilerin işlerini kolaylaştırmakta ve zaman kazandırmaktadır. Bu özellikler diğer zamanlanmış iş araçlarından çok daha fazla işleve sahiptir ve bu da Hangfire'ın tercih edilme nedenlerinden biridir.
Dezavantajları
Hangfire birçok artısı olsa da dezavantajları mevcuttur. Bir dezavantaj, çok sayıda işlemi yönetmek için kullanılan bellek gereksinimini artırabilmesidir. Uzun süreli kullanımda, zamanlanmış işlerinizin sayısı arttıkça sistem performansı düşebilir ve hafıza kullanımı artabilir. Bununla birlikte, bu dezavantaj belirli bir donanım veya işletim sistemi yapılandırmasıyla önlenebilir.
Başka bir dezavantaj, Hangfire'ın sadece .NET teknolojisiyle sınırlı olmasıdır. Bu, diğer teknolojiler kullanan geliştiriciler için bir dezavantajdır. Ayrıca, Hangfire'ın özellikleri başka bir iş sıralama aracı olan RabbitMQ gibi diğer araçların özelliklerine göre de sınırlı olabilir.
Hangfire'ın ücretsiz sürümünde kısıtlamalar vardır ve sınırlı sayıda iş sıralayabilirsiniz. Bu, büyük ölçekli projelerde kullanmak isteyenler için dezavantajlı olabilir. Bu nedenle, Hangfire'ı ticari olarak kullanmanız gerekirse, ücretli sürümlerinden birine geçmeniz gerekebilir.
Son olarak, Hangfire öğrenmesi ve yapılandırması nispeten kolay olsa da, öğrenme eğrisi mevcuttur. Başka bir iş sıralama aracındaki gibi, Hangfire'ı kullanmaya başlamak için birtakım özel bilgilere ihtiyacınız olabilir. Bu dezavantaj, diğer iş sıralama araçlarına göre daha yüksek bir öğrenme eğrisi olan geliştiriciler için daha da fazla.
Hangfire'ın dezavantajları, iş sıralama ve zamanlamada kullanabileceğiniz diğer araçları araştırdığınızda önemsiz kalmaktadır. Bununla birlikte, daha büyük projelerde, Hangfire'ın dezavantajları size uygun bir seçenek olmadığını gösterebilir. Kullanmadan önce dezavantajlarını araştırmak iyi bir fikirdir.
Hangfire Kullanarak Zamanlanmış İşler Nasıl İptal Edilir?
Hangfire kullanarak zamanlanmış işler yapmanın avantajlarından biri, işlerin istenildiği zaman iptal edilebilmesidir. Hangfire, işleri iptal etmek için bir dizi yöntem sunar.
İlk yöntem, Hangfire'ın kontrol panelini kullanarak iptal etmektir. Kontrol panelinde, iptal etmek istediğiniz işi belirleyin ve "Sil" düğmesine basın. Silme işlemi işi iptal edecektir.
İkinci yöntem, Hangfire API'sını kullanarak iptal etmektir. IBackgroundJobClient arayüzündeki Hangfire.BackgroundJob tarafından sağlanan Cancel metodunu kullanarak işi iptal edebilirsiniz. Örneğin;
```csharpBackgroundJob.Delete(jobId);```
Üçüncü yöntem, Hangfire Dashboard aracılığıyla iptal edilmesidir. PerformContext parametresini kullanarak, bu yöntemle iptal etmek mümkündür. Yalnızca kuyruktaki işleri iptal etmekle kalmaz, ancak çalışan işleri de durdurabilirsiniz.
Örneğin;
```csharppublic void ProcessJob(PerformContext context){ var monitoringApi = JobStorage.Current.GetMonitoringApi(); var jobDetailsDto = monitoringApi.JobDetails(context.BackgroundJob.Id);
if (jobDetailsDto == null) { _logger.LogInformation($"Job is not exist. JobId:{context.BackgroundJob.Id}"); return; }
if (jobDetailsDto.EnqueuedAt.HasValue) { _logger.LogInformation($"Job is cancelled by Enqueue Time. JobId:{context.BackgroundJob.Id}"); monitoringApi.Delete(context.BackgroundJob.Id); }}```
Hangfire işleri iptal etmek için bu yöntemler kullanılabilir. İşleri planlamanın yanı sıra, işleri iptal etmek de Hangfire ile oldukça kolaydır.