DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

Agendamento de Tarefas com Quartz.NET

O Quartz.NET é uma biblioteca open-source que facilita o agendamento de tarefas (jobs) em aplicações .NET. Ela é robusta e oferece diversas funcionalidades para agendamento, como tarefas recorrentes, execução baseada em cron expressions e muito mais. O Quartz.NET é amplamente utilizado em aplicações empresariais para agendar e automatizar tarefas de manutenção ou processamento em segundo plano. Neste exemplo, vamos configurar o Quartz.NET para agendar e executar uma tarefa recorrente usando cron expression.

Bibliotecas:

Para usar a biblioteca Quartz.NET, instale o seguinte pacote NuGet no seu projeto:

Install-Package Quartz
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

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

public class TarefaExemplo : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine($"Tarefa executada em: {DateTime.Now}");
        return Task.CompletedTask;
    }
}

class Program
{
    static async Task Main(string[] args)
    {
        // Criando um agendador de tarefas
        IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
        await scheduler.Start();

        // Definindo a tarefa que será agendada
        IJobDetail job = JobBuilder.Create<TarefaExemplo>()
            .WithIdentity("tarefaExemplo", "grupo1")
            .Build();

        // Criando um cron trigger para execução a cada minuto
        ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("triggerExemplo", "grupo1")
            .StartNow()
            .WithCronSchedule("0 * * ? * *") // Executa todo minuto
            .Build();

        // Agendando a tarefa
        await scheduler.ScheduleJob(job, trigger);

        Console.WriteLine("Tarefa agendada. Pressione Enter para sair...");
        Console.ReadLine();

        await scheduler.Shutdown();
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, usamos o Quartz.NET para criar um agendador de tarefas que executa um job chamado TarefaExemplo. A classe TarefaExemplo implementa a interface IJob, que contém o método Execute, onde a lógica da tarefa é definida. A tarefa imprime a data e hora de execução no console. O agendamento da tarefa é feito através de um cron trigger, que foi configurado para executar a tarefa a cada minuto usando a cron expression "0 * * ? * *". O agendador começa a executar a tarefa imediatamente e continuará a fazê-lo a cada minuto até que o programa seja encerrado.

Conclusão:

O Quartz.NET é uma biblioteca poderosa e flexível para agendamento de tarefas em aplicações .NET. Ele suporta cron expressions, execução de múltiplos jobs e diversos tipos de triggers, o que o torna uma solução robusta para automação de tarefas em segundo plano. É amplamente usado para cenários complexos de agendamento em sistemas empresariais.

Código fonte: GitHub

Top comments (0)