Hangfire क्या है और इसकी आवश्यकता क्यों है?
Hangfire C# (.NET) के लिए एक शक्तिशाली और लोकप्रिय लाइब्रेरी है, जो बैकग्राउंड जॉब्स (background jobs) को निष्पादित करने के लिए डिज़ाइन की गई है। आधुनिक वेब डेवलपमेंट में अक्सर ऐसे ऑपरेशन करने की आवश्यकता होती है जो एप्लिकेशन के मुख्य निष्पादन प्रवाह को ब्लॉक न करें। उदाहरण के लिए: ईमेल सूचनाएं भेजना, रिपोर्ट जनरेट करना, अपलोड की गई फ़ाइलों को प्रोसेस करना, बाहरी API के साथ डेटा सिंक करना, डेटाबेस में पुराने रिकॉर्ड साफ़ करना, और भी बहुत कुछ।
Hangfire ऐसे कार्यों को चलाने का एक सरल लेकिन लचीला तरीका प्रदान करता है। लाइब्रेरी की मुख्य विशेषताएं:
- बैकग्राउंड में कार्य निष्पादन: कार्य एसिंक्रोनस रूप से चलते हैं, उपयोगकर्ता को रिस्पॉन्स देने में बाधा नहीं डालते।
- शेड्यूलिंग: कार्यों को शेड्यूल (cron-एक्सप्रेशन) या विलंब (delay) के साथ चलाया जा सकता है।
- विश्वसनीयता: Hangfire कार्यों की जानकारी को स्थायी स्टोरेज (डेटाबेस) में सहेजता है। भले ही एप्लिकेशन पुनः प्रारंभ हो, अधूरे कार्य पूरे हो जाएंगे।
- मॉनिटरिंग: बिल्ट-इन वेब इंटरफ़ेस (Dashboard) कार्यों की स्थिति ट्रैक करने, लॉग देखने और विफल कार्यों को पुनः चलाने की सुविधा देता है।
- पुनः प्रयास: यदि कोई कार्य त्रुटि के साथ समाप्त होता है, तो Hangfire स्वचालित रूप से इसे पुनः चलाने का प्रयास करता है (कॉन्फ़िगरेबल रीट्राई पॉलिसी के साथ)।
- DI के साथ एकीकरण: ASP.NET Core में डिपेंडेंसी इंजेक्शन (Dependency Injection) कंटेनरों के साथ आसानी से एकीकृत होता है।
Hangfire विभिन्न स्टोरेज को सपोर्ट करता है: SQL Server, PostgreSQL, Redis, MongoDB और अन्य। यह इसे छोटी वेबसाइटों से लेकर उच्च-लोड वाली एंटरप्राइज़ सिस्टम तक, किसी भी पैमाने के प्रोजेक्ट के लिए उपयुक्त बनाता है।
इंस्टॉलेशन
Hangfire NuGet Package Manager के माध्यम से इंस्टॉल किया जाता है। Python के विपरीत, जहाँ pip install का उपयोग होता है, .NET इकोसिस्टम में dotnet add package या Visual Studio पैकेज मैनेजर का उपयोग किया जाता है।
बेस Hangfire पैकेज इंस्टॉल करने के लिए, अपने प्रोजेक्ट की रूट फ़ोल्डर में टर्मिनल में निम्न कमांड चलाएँ:
dotnet add package Hangfire
यह कमांड Hangfire कोर और मेमोरी (InMemory) में कार्यों को स्टोर करने के लिए डिपेंडेंसी इंस्टॉल करेगा। प्रोडक्शन वातावरण के लिए, आपको एक विशिष्ट डेटाबेस के लिए पैकेज इंस्टॉल करना होगा, उदाहरण के लिए:
- SQL Server:
dotnet add package Hangfire.SqlServer - PostgreSQL:
dotnet add package Hangfire.PostgreSql - Redis:
dotnet add package Hangfire.Redis
पैकेज इंस्टॉल करने के बाद, Hangfire को Program.cs (ASP.NET Core के लिए) या Startup.cs फ़ाइल में कॉन्फ़िगर करना आवश्यक है।
त्वरित शुरुआत
ASP.NET Core एप्लिकेशन में Hangfire के सेटअप और उपयोग का एक न्यूनतम उदाहरण देखते हैं।
चरण 1: Program.cs में कॉन्फ़िगरेशन
using Hangfire;
using Hangfire.SqlServer;
var builder = WebApplication.CreateBuilder(args);
// SQL Server स्टोरेज के साथ Hangfire जोड़ना
builder.Services.AddHangfire(configuration => configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage(builder.Configuration.GetConnectionString("HangfireConnection")));
// Hangfire सर्वर जोड़ना
builder.Services.AddHangfireServer();
var app = builder.Build();
// Dashboard (मॉनिटरिंग पैनल) सक्षम करना
app.UseHangfireDashboard();
// एक सरल फायर-एंड-फॉरगेट कार्य का उदाहरण
app.MapGet("/fire-and-forget", () =>
{
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Hangfire से नमस्ते!"));
return $"कार्य {jobId} कतार में जोड़ दिया गया है।";
});
app.Run();
चरण 2: कार्य बनाना
उपरोक्त उदाहरण में हमने BackgroundJob.Enqueue विधि का उपयोग किया है। यह "Fire-and-Forget" प्रकार का कार्य बनाता है।