C# (.NET) में कार्य शेड्यूलर: Quartz.NET, Hangfire और Coravel

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में कार्य शेड्यूलर: Quartz.NET, Hangfire और Coravel



आधुनिक .NET अनुप्रयोगों में, अक्सर उपयोगकर्ता के अनुरोध पर ही नहीं, बल्कि एक निर्धारित समय पर भी कोड निष्पादित करने की आवश्यकता होती है: ईमेल न्यूज़लेटर भेजना, डेटाबेस सफाई, रिपोर्ट जनरेशन, बाहरी API के साथ सिंक्रनाइज़ेशन। इसके लिए कार्य शेड्यूलर (Job Schedulers) का उपयोग किया जाता है। इस लेख में, हम C# (.NET) के लिए तीन लोकप्रिय उपकरणों पर चर्चा करेंगे: Quartz.NET, Hangfire और Coravel, उनकी विशेषताएं, कोड उदाहरण और उपयोग के परिदृश्य।



.NET में कार्य शेड्यूलर की आवश्यकता क्यों है?

कार्य शेड्यूलर आपको अनुमति देता है:

  • एक निश्चित समय पर पृष्ठभूमि कार्य निष्पादित करना (उदाहरण के लिए, प्रतिदिन सुबह 8:00 बजे)।
  • एक निर्धारित अंतराल पर कार्यों को दोहराना (हर 5 मिनट में)।
  • एप्लिकेशन के मुख्य थ्रेड को ब्लॉक किए बिना कार्य कतारों को संसाधित करना।
  • कार्यों को आसानी से प्रबंधित करना (जोड़ना, हटाना, रोकना)।
  • दोष सहनशीलता सुनिश्चित करना (त्रुटियों पर पुनः प्रयास)।


1. Quartz.NET — शक्तिशाली और लचीला शेड्यूलर

Quartz.NET .NET के लिए लोकप्रिय Java फ्रेमवर्क Quartz का पोर्ट है। यह जटिल शेड्यूल (cron-एक्सप्रेशन), क्लस्टरिंग, डेटाबेस में कार्यों की स्थिरता का समर्थन करता है। यह एंटरप्राइज़ प्रोजेक्ट्स के लिए उपयुक्त है।



स्थापना

dotnet add package Quartzdotnet add package Quartz.Extensions.Hosting


उदाहरण: cron-शेड्यूल वाला कार्य

using Quartz;using Quartz.Impl;using System.Threading.Tasks;

public class EmailJob : IJob{ public async Task Execute(IJobExecutionContext context) { Console.WriteLine($"ईमेल भेजा जा रहा है {DateTime.Now} पर"); // ईमेल भेजने का तर्क await Task.CompletedTask; }}

// Program.cs में कॉन्फ़िगरेशनvar scheduler = await StdSchedulerFactory.GetDefaultScheduler();await scheduler.Start();

var job = JobBuilder.Create<EmailJob>() .WithIdentity("emailJob", "group1") .Build();

var trigger = TriggerBuilder.Create() .WithIdentity("emailTrigger", "group1") .WithCronSchedule("0 0 8 * * ?") // प्रतिदिन सुबह 8:00 बजे .Build();

await scheduler.ScheduleJob(job, trigger);


विशेषताएं

  • cron-एक्सप्रेशन का समर्थन (लचीला शेड्यूल)।
  • वितरित प्रणालियों के लिए क्लस्टरिंग।
  • स्थिरता (पुनरारंभ होने पर कार्य सहेजे जाते हैं)।
  • हजारों कार्यों के लिए उच्च प्रदर्शन।


2. Hangfire — सरलता और अंतर्निहित UI

Hangfire न्यूनतम कॉन्फ़िगरेशन और कार्यों की निगरानी के लिए एक अंतर्निहित वेब पैनल वाला शेड्यूलर है। यह छोटे और मध्यम आकार के प्रोजेक्ट्स के लिए उपयुक्त है जहां तेज़ एकीकरण महत्वपूर्ण है।



स्थापना

dotnet add package Hangfiredotnet add package Hangfire.SqlServer (डेटाबेस में भंडारण के लिए)


उदाहरण: विलंब और पुनरावृत्ति वाला सरल कार्य

using Hangfire;using Hangfire.SqlServer;

// Program.cs में कॉन्फ़िगरेशनGlobalConfiguration.Configuration .UseSqlServerStorage("YourConnectionString");

app.UseHangfireServer();app.UseHangfireDashboard(); // /hangfire तक पहुंच

// कार्य बनानाBackgroundJob.Schedule(() => Console.WriteLine("विलंबित कार्य"), TimeSpan.FromMinutes(5));RecurringJob.AddOrUpdate("daily-report", () => Console.WriteLine("दैनिक रिपोर्ट"), Cron.Daily);


विशेषताएं

  • निगरानी के लिए अंतर्निहित वेब इंटरफ़ेस (बिना अतिरिक्त निर्भरता के)।
  • कतारों, पुनः प्रयासों और विलंबित कार्यों का समर्थन।
  • ASP.NET Core के साथ आसानी से एकीकृत होता है।
  • SQL Server, Redis, PostgreSQL में कार्यों का भंडारण।


3. Coravel — हल्का और आधुनिक

Coravel .NET के लिए एक न्यूनतम शेड्यूलर है, जो Laravel से प्रेरित है। इसे बाहरी निर्भरता की आवश्यकता नहीं है

अनुशंसाएँ