Quartz.NET pour C# (.NET) : Guide complet de planification de tâches
Quartz.NET est une bibliothèque de planification de tâches open source puissante, flexible et largement utilisée pour les applications .NET. Elle permet aux développeurs de créer, gérer et exécuter des tâches en arrière-plan selon un calendrier défini. Que vous ayez besoin d'exécuter du code à une heure précise, à intervalles réguliers ou en réponse à un événement (comme les cron jobs sous Linux), Quartz.NET est le choix idéal. Cette bibliothèque est un portage du célèbre framework Java Quartz Scheduler.
Pourquoi en avez-vous besoin ? Dans le développement moderne, de nombreuses tâches ne doivent pas être exécutées de manière synchrone à la demande de l'utilisateur. Il peut s'agir d'envoyer des campagnes email, de nettoyer des fichiers temporaires, de synchroniser des données avec des API externes, de générer des rapports, de mettre à jour le cache, etc. Quartz.NET offre un mécanisme fiable et robuste pour exécuter ces tâches. Il prend en charge la persistance des états des jobs en base de données (JobStore), ce qui permet de survivre aux redémarrages de l'application, et supporte le clustering pour répartir la charge.
Contrairement à l'utilisation simple de System.Threading.Timer ou de BackgroundService, Quartz.NET propose une API riche pour gérer le cycle de vie des tâches, des déclencheurs complexes (quotidiens, hebdomadaires, expressions CRON), l'exécution parallèle, l'écoute d'événements et bien plus encore. Cela en fait la référence de facto pour la planification dans l'écosystème .NET.
Installation
Quartz.NET est distribué via NuGet. Pour l'installer, utilisez l'une des commandes suivantes dans la console du gestionnaire de packages :
# Installation du package principal
dotnet add package Quartz
# Si vous avez besoin du support de la configuration XML
dotnet add package Quartz.Plugins
# Pour une utilisation avec Dependency Injection (recommandé pour ASP.NET Core)
dotnet add package Quartz.Extensions.Hosting
Pour le .NET Framework classique (par exemple .NET 4.8), utilisez la console NuGet :
Install-Package Quartz
Démarrage rapide : Exemple minimal fonctionnel
Créons une simple application console qui affiche "Bonjour, Quartz !" toutes les 5 secondes.
using System;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
namespace QuartzQuickStart
{
// 1. Création du Job (tâche)
public class HelloJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
await Console.Out.WriteLineAsync($"Bonjour, Quartz ! Heure : {DateTime.Now:HH:mm:ss}");
}
}
class Program
{
static async Task Main(string[] args)
{
// 2. Création de la fabrique du planificateur
StdSchedulerFactory factory = new StdSchedulerFactory();
// 3. Obtention du planificateur
IScheduler scheduler = await factory.GetScheduler();
// 4. Démarrage du planificateur
await scheduler.Start();
// 5. Définition de la tâche (Job)
IJobDetail job = JobBuilder.Create()
.WithIdentity("myJob", "group1")
.Build();
// 6. Définition du déclencheur (planning)
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(5)
.RepeatForever())
.Build();
// 7. Enregistrement de la tâche et du déclencheur dans le planificateur
await scheduler.ScheduleJob(job, trigger);
// 8. Attente pour que la console ne se ferme pas
await Task.Delay(TimeSpan.FromSeconds(30));
// 9. Arrêt du planificateur
await scheduler.Shutdown();
}
}
}
Classes, méthodes et interfaces principales
Aussi dans la bibliothèque
Travailler avec Excel en Rust : bibliothèques et exemples de code
Catch2 Matchers C++ : guide complet avec exemples
Travailler avec XML en Go (Golang) : la bibliothèque standard encoding/xml
JMH Java : guide complet avec exemples de microbenchmarking
Frameworks CLI pour Rust : aperçu des meilleurs outils pour créer des utilitaires en ligne de commande