c# - googletagmanager - gtm console
¿Cómo eliminar todos los trabajos recurrentes de hangfire en el inicio? (3)
Estoy considerando usar Hangfire como un programador de trabajos para trabajos recurrentes. Así que configurarlos es simple con AddOrUpdate
, pero entonces, ¿cómo lo AddOrUpdate
? No quiero contaminar mi código con RecurringJob.RemoveIfExists()
cuando se haya eliminado ese trabajo y, luego, recordar que hay que eliminarlo más tarde.
¿Hay alguna forma de obtener una lista de todos los trabajos recurrentes y eliminarlos cuando se inicie el servidor y así mi código los volverá a agregar cada vez? Si no, si hay una mejor manera?
p.ej
Versión de la aplicación 1: Se ha agregado un nuevo trabajo recurrente de Hangfire Do something 1
Versión de la aplicación 2: Se agregaron nuevos trabajos recurrentes de Hangfire Do something 2
y Do Something 3
Versión de la aplicación 3: trabajo recurrente de Hangfire eliminado Do something 2
Problema: el trabajo seguirá existiendo en el servidor con el error "No se pudo cargar el tipo ..." y debe eliminarse.
Puedes usar este código:
var recurringJobs = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs();
foreach (var item in recurringJobs)
{
RecurringJob.RemoveIfExists(item.Id);
}
Un poco tarde en esto, pero espero que ayude a alguien más. Me quedé atascado en la misma situación. Al final, la respuesta sobre los datos de tareas recurrentes de HangFire me ayudó.
Utilizo JobStorage
para recorrer todos los trabajos recurrentes y eliminar cada uno como se JobStorage
a continuación:
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
Estoy seguro de que hay una mejor manera de salir pero no pude encontrarla
La respuesta de Paul fue útil, pero la API API parece haber cambiado. Usando Hangfire 1.6.20 necesitaba obtener los trabajos recurrentes de StorageConnectionExtensions
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in StorageConnectionExtensions.GetRecurringJobs(connection))
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}