Logo
Empezar a leer

© 2025 - alckordev

Implementar Cron Job en ASP.NET Core 6

12 mayo, 2023

3 minutos de lectura

0

Implementar Cron Job en ASP.NET Core 6

En el desarrollo de aplicaciones web modernas, es común encontrarse con la necesidad de ejecutar tareas de manera periódica o programada, como enviar correos electrónicos, generar informes o realizar mantenimiento en la base de datos. Estas tareas, conocidas como cron jobs, son una parte esencial de la gestión eficiente de los recursos y el rendimiento de nuestras aplicaciones.

En esta entrada de blog, exploraremos cómo implementar un cron job en una aplicación ASP.NET Core Web API utilizando el paquete Hangfire.AspNetCore. Hangfire es una potente y flexible biblioteca de código abierto que nos permite programar y gestionar tareas en segundo plano de manera eficiente y escalable. Además, Hangfire proporciona un panel de control integrado para monitorear y administrar nuestras tareas programadas.

A continuación, te guiaré paso a paso a través del proceso de configuración de Hangfire en un proyecto ASP.NET Core Web API, y cómo implementar un cron job simple para enviar correos electrónicos. ¡Vamos a empezar!

Instalación de paquetes

Instalar los siguientes paquetes Hangfire.AspNetCore y Hangfire.MemoryStorage. Puedes hacer esto atraves del gestor de paquetes de NuGet.

También puedes instalar el paquete desde la consola de NuGet o .NET CLI ejecutando el siguiente comando:

NuGet\Install-Package Hangfire.AspNetCore -Version 1.8.0
NuGet\Install-Package Hangfire.MemoryStorage -Version 1.7.0
dotnet add package Hangfire.AspNetCore --version 1.8.0
dotnet add package Hangfire.MemoryStorage --version 1.7.0

Configuración de Hangfire

Abre el archivo Program.cs y añade las siguientes referencias con la configuración para Hangfire:

Importante

Recuerda que el almacenamiento en memoria es solo para entornos de desarrollo y pruebas. Para entornos de producción, considera utilizar un almacenamiento persistente como SQL Server, MySQL u otro soportado por Hangfire.

// Program.cs

using Hangfire;
using Hangfire.MemoryStorage;

builder.Services.AddHangfire(x => x
    .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
    .UseSimpleAssemblyNameTypeSerializer()
    .UseRecommendedSerializerSettings()
    .UseMemoryStorage()
);

builder.Services.AddHangfireServer();

Crear el Cron Job

Crea una carpeta llamada Helpers y añade una clase CronJobs:

// Helpers/CronJobs.cs

public class CronJobs
{
    public async Task CustomTask()
    {
        Console.WriteLine($"Do something - {DateTime.Now:yyyy-mm-dd H:mm:ss}");
        await Task.CompletedTask;
    }
}

Habilitar el Dashboard de Hangfire

Para habilitar el panel de control de Hangfire en tu archivo Program.cs, agrega app.UseHangfireDashboard() después de app.UseAuthorization() y antes de app.MapControllers().

// Program.cs

app.UseAuthorization();
app.UseHangfireDashboard();
app.MapControllers();

Registrar el Cron Job

En el archivo Program.cs, incluye las siguientes líneas de código antes de app.Run() para registrar adecuadamente la tarea recurrente:

// Program.cs

RecurringJob.AddOrUpdate<CronJobs>("CustomTask", x => x.CustomTask(), Cron.Minutely);

app.Run();

Si todo funciona correctamente, podrás visualizar las tareas recurrentes en el panel de control de Hangfire en la siguiente dirección: https://localhost:7021/hangfire/recurring

Además, en la consola de Visual Studio en modo de desarrollo, podrás observar la ejecución de la tarea programada cada minuto.

Espero que este artículo te haya sido útil para implementar un cron job utilizando Hangfire en ASP.NET Core Web API. Si tienes alguna pregunta o comentario, no dudes en dejarlo en la sección de comentarios a continuación. Si este artículo te resultó útil, por favor compártelo con tus amigos y colegas para que también puedan beneficiarse de esta información.

¡Gracias por leer y no olvides compartir tus experiencias utilizando Hangfire en tus proyectos!

test...

¿Te gustó lo que leíste?

Si lo deseas, puedes apoyarme con una donación voluntaria. Tu aporte me permite dedicar más tiempo a investigar, escribir y mejorar la calidad del contenido que publico. ¡Muchísimas gracias por considerar impulsar este proyecto!

Cómprame un café

Compartir en:

Implementar Cron Job en ASP.NET Core 6 - Isco • Desarrollador de software