Quartz.NET C# (.NET) पूर्ण गाइड: शेड्यूलिंग, उदाहरण और ट्यूटोरियल

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

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

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

Quartz.NET C# (.NET) के लिए: टास्क शेड्यूलिंग की पूरी गाइड

Quartz.NET एक शक्तिशाली, लचीली और व्यापक रूप से उपयोग की जाने वाली ओपन-सोर्स टास्क शेड्यूलिंग लाइब्रेरी है जो .NET एप्लिकेशन के लिए बनाई गई है। यह डेवलपर्स को बैकग्राउंड जॉब्स को शेड्यूल करने, मैनेज करने और एक्जीक्यूट करने की सुविधा देती है। अगर आपको एक निश्चित समय पर, एक निश्चित अंतराल पर, या किसी इवेंट के जवाब में कोड चलाना है (जैसे Linux में क्रॉन जॉब्स), तो Quartz.NET सबसे सही विकल्प है। यह लाइब्रेरी लोकप्रिय Java फ्रेमवर्क Quartz Scheduler का पोर्ट है।

इसकी आवश्यकता क्यों है? आधुनिक डेवलपमेंट में अक्सर ऐसे कार्य होते हैं जो यूजर के रिक्वेस्ट पर सिंक्रोनस रूप से नहीं चलने चाहिए। जैसे ईमेल न्यूज़लेटर भेजना, टेम्पररी फाइलों को साफ करना, बाहरी API से डेटा सिंक करना, रिपोर्ट जनरेट करना, कैश अपडेट करना आदि। Quartz.NET ऐसे कार्यों को करने के लिए एक विश्वसनीय और फॉल्ट-टॉलरेंट मैकेनिज्म प्रदान करता है। यह जॉब्स की स्थिति को डेटाबेस (JobStore) में सेव करने का समर्थन करता है, जिससे एप्लिकेशन रीस्टार्ट होने पर भी जॉब्स सुरक्षित रहती हैं, और लोड बैलेंसिंग के लिए क्लस्टरिंग भी सपोर्ट करता है।

सिर्फ System.Threading.Timer या BackgroundService का उपयोग करने के विपरीत, Quartz.NET जॉब्स के लाइफसाइकिल मैनेजमेंट, जटिल ट्रिगर्स (दैनिक, साप्ताहिक, CRON एक्सप्रेशन), समानांतर एक्जीक्यूशन, इवेंट लिसनिंग और बहुत कुछ के लिए एक समृद्ध API प्रदान करता है। यह इसे .NET इकोसिस्टम में शेड्यूलिंग का डी-फैक्टो स्टैंडर्ड बनाता है।

इंस्टॉलेशन

Quartz.NET NuGet के माध्यम से वितरित किया जाता है। इंस्टॉल करने के लिए पैकेज मैनेजर कंसोल में निम्नलिखित कमांड में से एक का उपयोग करें:

# मुख्य पैकेज इंस्टॉल करने के लिए
dotnet add package Quartz

# अगर आपको XML कॉन्फ़िगरेशन सपोर्ट चाहिए
dotnet add package Quartz.Plugins

# Dependency Injection के साथ उपयोग के लिए (ASP.NET Core के लिए अनुशंसित)
dotnet add package Quartz.Extensions.Hosting

क्लासिक .NET Framework (जैसे .NET 4.8) के लिए NuGet कंसोल का उपयोग करें:

Install-Package Quartz

त्वरित शुरुआत: न्यूनतम कार्यशील उदाहरण

चलिए एक सरल कंसोल एप्लिकेशन बनाते हैं जो हर 5 सेकंड में "Hello, Quartz!" प्रिंट करेगा।

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

namespace QuartzQuickStart
{
    // 1. Job (कार्य) बनाएं
    public class HelloJob : IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            await Console.Out.WriteLineAsync($"Hello, Quartz! समय: {DateTime.Now:HH:mm:ss}");
        }
    }

    class Program
    {
        static async Task Main(string[] args)
        {
            // 2. शेड्यूलर फैक्ट्री बनाएं
            StdSchedulerFactory factory = new StdSchedulerFactory();

            // 3. शेड्यूलर प्राप्त करें
            IScheduler scheduler = await factory.GetScheduler();

            // 4. शेड्यूलर शुरू करें
            await scheduler.Start();

            // 5. Job (कार्य) को परिभाषित करें
            IJobDetail job = JobBuilder.Create()
                .WithIdentity("myJob", "group1")
                .Build();

            // 6. ट्रिगर (शेड्यूल) को परिभाषित करें
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("myTrigger", "group1")
                .StartNow()
                .WithSimpleSchedule(x => x
                    .WithIntervalInSeconds(5)
                    .RepeatForever())
                .Build();

            // 7. शेड्यूलर में Job और ट्रिगर को रजिस्टर करें
            await scheduler.ScheduleJob(job, trigger);

            // 8. कंसोल को बंद होने से रोकने के लिए प्रतीक्षा करें
            await Task.Delay(TimeSpan.FromSeconds(30));

            // 9. शेड्यूलर को बंद करें
            await scheduler.Shutdown();
        }
    }
}

मुख्य क्लासेस, मेथड्स और इंटरफेसेस

अनुशंसाएँ