Je cherche à utiliser Hangfire en tant que planificateur de tâches pour les tâches récurrentes. Donc, les configurer est simple avec AddOrUpdate
, mais alors comment puis-je le supprimer? Je ne veux pas polluer mon code avec RecurringJob.RemoveIfExists()
lorsque ce travail a été supprimé et je ne dois pas oublier de le supprimer ultérieurement.
Existe-t-il un moyen d’obtenir une liste de toutes les tâches récurrentes et de les supprimer au démarrage du serveur, afin que mon code soit ajouté à chaque fois? Si non, s'il y a un meilleur moyen?
par exemple.
Version d'application 1: nouvelle tâche récurrente Hangfire ajoutée Do something 1
Version d'application 2: Ajout de nouveaux travaux récurrents Hangfire Do something 2
et Do Something 3
Version d'application 3: tâche récurrente Hangfire supprimée Do something 2
Problème: le travail existera toujours sur le serveur avec l'erreur "Impossible de charger le type ..." et doit être supprimé.
Un peu en retard sur celui-ci mais j'espère que cela aidera quelqu'un d'autre. Je me suis retrouvé dans la même situation. En fin de compte, la réponse sur les données de tâches récurrentes de HangFire m'a aidé.
J'utilise la variable JobStorage
pour parcourir toutes les tâches récurrentes et les supprimer successivement, comme indiqué ci-dessous:
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
Je suis sûr qu'il existe un meilleur moyen de sortir mais je ne pouvais pas le trouver
la réponse de paul était utile, mais l'API api semble avoir changé. À l’aide de Hangfire 1.6.20, j’avais besoin d’obtenir les travaux récurrents de StorageConnectionExtensions
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in StorageConnectionExtensions.GetRecurringJobs(connection))
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
Vous pouvez utiliser ce code:
var recurringJobs = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs();
foreach (var item in recurringJobs)
{
RecurringJob.RemoveIfExists(item.Id);
}