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

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

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

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

C# (.NET) में कार्य शेड्यूलर: अवलोकन और उदाहरण



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



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



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



स्थापना

dotnet add package Quartz


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

using Quartz;using Quartz.Impl;

public class HelloJob : IJob{ public async Task Execute(IJobExecutionContext context) { Console.WriteLine($"नमस्ते! समय: {DateTime.Now}"); }}

// शेड्यूलर सेटअपISchedulerFactory schedulerFactory = new StdSchedulerFactory();IScheduler scheduler = await schedulerFactory.GetScheduler();

// कार्य परिभाषित करेंIJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("helloJob", "group1") .Build();

// ट्रिगर: हर 10 सेकंडITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0/10 * * * * ?") // हर 10 सेकंड .ForJob(job) .Build();

await scheduler.ScheduleJob(job, trigger);await scheduler.Start();


विशेषताएँ:

  • cron-एक्सप्रेशन का समर्थन (उदाहरण: 0 0 12 * * ? — हर दिन दोपहर में)।
  • ADO.NET में कार्यों का भंडारण (SQL Server, PostgreSQL, MySQL)।
  • गतिशील रूप से कार्य बनाने/हटाने की क्षमता।
  • दोष सहनशीलता के लिए क्लस्टरिंग।


2. Hangfire — सरलता और अंतर्निहित डैशबोर्ड



Hangfire न्यूनतम कॉन्फ़िगरेशन के साथ बैकग्राउंड कार्यों को निष्पादित करने के लिए एक लाइब्रेरी है। यह निगरानी के लिए एक अंतर्निहित वेब डैशबोर्ड, त्रुटियों पर पुनः प्रयास और ASP.NET Core के साथ एकीकरण प्रदान करता है।



स्थापना

dotnet add package Hangfiredotnet add package Hangfire.SqlServer # SQL Server में भंडारण के लिए


उदाहरण: विलंबित और आवर्ती कार्य

using Hangfire;

// Startup.cs में सेटअपpublic void ConfigureServices(IServiceCollection services){ services.AddHangfire(config => config.UseSqlServerStorage("connection_string")); services.AddHangfireServer();}

public void Configure(IApplicationBuilder app){ app.UseHangfireDashboard(); // /hangfire // आवर्ती कार्य: हर 5 मिनट RecurringJob.AddOrUpdate( "cleanup-cache", () => Console.WriteLine("कैश सफाई..."), "*/5 * * * *"); // विलंबित कार्य (1 घंटे बाद) BackgroundJob.Schedule( () => SendEmail("user@example.com"), TimeSpan.FromHours(1));}

public void SendEmail(string email){ Console.WriteLine($"ईमेल भेजा जा रहा है {email} पर");}


लाभ:

  • कार्यों की स्थिति देखने के लिए अंतर्निहित डैशबोर्ड (/hangfire)।
  • विफलताओं पर स्वचालित पुनः प्रयास।
  • कतारों का समर्थन (डिफ़ॉल्ट रूप से — Redis या SQL Server)।
  • DI के माध्यम से ASP.NET Core के साथ सरल एकीकरण।


3. Coravel — .NET Core के लिए हल्का शेड्यूलर



Coravel एक न्यूनतम लाइब्रेरी है जिसे बाहरी निर्भरताओं की आवश्यकता नहीं है (स्वयं .NET के अलावा)। यह छोटे प्रोजेक्ट्स के लिए आदर्श है जहाँ स्थिरता की आवश्यकता नहीं है।



स्थापना

dotnet add                    

अनुशंसाएँ