Quartz.NET

La planification de tâches est une activité habituelle du développeur. Il est parfois nécessaire de programmer des processus récurrents ou lancer certains actions à une date définie. Il existe de nombreux outils pour planifier les tâches avec C#, par exemple Hangfire, Coravel
Dans cet article, je vais m’intéresser à Quartz.NET. C’est le système de planification de tâches le plus simple que j’ai pu tester. Voyons ça…

Quartz.NET est un portage en .NET d’un job scheduler issu du monde Java. Cette bibliothèque a été créée pour répondre à la nécessité croissante de planifier et d’automatiser les tâches. Ce framework est très populaire chez les développeurs .NET. Open source, il est aussi bien utilisé sur les petits projets perso que dans les grandes multinationales.

Quartz.NET – Installation

Vous pouvez installer le package Nuget pour utiliser Quartz.NET. Le moyen le plus simple sous Visual Studio Code est d’utiliser l’extension Nuget Package Manager. Utilisez Ctrl+Shift+P pour lancer cette extension depuis VS Code après l’avoir installée.

Code

Les composants de base de Quartz.NET sont les jobs, les triggers et les schedulers.

Job

Le job définit la tâche à effectuer. Pour créer un job, il suffit de créer une classe qui hérite de l’interface IJob. Cette interface est composée d’une seule méthode, Execute, qui contient le code que notre job doit exécuter.

public class MyJob : IJob
{
    public async  Task Execute(IJobExecutionContext context)
    {
        await Console.Out.WriteLineAsync($"Current date and time is {DateTime.Now:dd/MM/yyyy hh:mm:ss}");
    }
}

Trigger

Il faut maintenant créer un trigger, c’est la classe qui contient les informations de déclenchement de notre job. Pour créer le trigger nous utilisons la classe TriggerBuilder.

ITrigger trigger = TriggerBuilder.Create();

La méthode WithSimpleSchedule nous permet de définir à quelle moment nous voulons que notre job se déclenche.

Le Trigger ci-dessous, par exemple, exécutera notre job toutes les 15 secondes 5 fois.

ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(name: "MyTrigger", group: "TriggerGroup")
.WithSimpleSchedule(s => s.WithRepeatCount(5).WithIntervalInSeconds(15))
.Build();

WithIdentity permet d’identifier notre trigger avec un nom et à l’associer à un groupe.

Nous pouvons avoir des exécutions plus précises avec la méthode WithCronSchedule. Cron est un outil bien connu des utilisateurs des systèmes Unix. Il permet de lancer automatiquement des commandes à un moment précis (date, heure, mois…).

Si WithCronSchedule prend en paramètre le string « 30 13 12 15 8 ? » par exemple, notre script s’exécutera chaque année à 12h13mn30s le 15 août.
Vous pouvez aisément convertir des dates « normales » en valeurs Cron avec des sites comme CronMaker.

Scheduler

Le scheduler fait le lien entre le job et le trigger. Il gère le cycle de vie de notre job. Voici comment le créer:

var schedulerFactory = SchedulerBuilder.Create().Build();
var scheduler = await schedulerFactory.GetScheduler();

Ensuite on programme notre job.

await scheduler.ScheduleJob(job, trigger);

Puis, on le démarre

await scheduler.Start();

Conclusion

Ce article donne un aperçu de ce qu’on peut faire avec Quartz.NET. Vous pouvez maintenant créer rapidement et facilement des tâches planifiées et gérer leur exécution avec précision.
Pour aller plus loin, vous pouvez explorer des fonctionnalités avancées telles que la persistance des tâches, la gestion des dépendances et l’intégration avec d’autres services et bibliothèques.
N’hésitez pas à consulter la documentation officielle de Quartz.NET.

Auteur : Daniel MINKO FASSINOU

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.