Hangfireを定期的なジョブのジョブスケジューラとして使用することを検討しています。したがって、AddOrUpdate
を使用してそれらを構成するのは簡単ですが、それからどのように削除しますか?ジョブが削除されたときにRecurringJob.RemoveIfExists()
でコードを汚染したくないので、後で削除することを忘れないでください。
すべての定期的なジョブのリストを取得し、サーバーの起動時にそれらを削除する方法はありますか?私のコードは毎回それらを追加しますか?そうでない場合、より良い方法がありますか?
例えば.
アプリケーションバージョン1:新しいHangfire定期ジョブを追加Do something 1
アプリケーションバージョン2:新しいHangfire定期ジョブを追加Do something 2
およびDo Something 3
アプリケーションバージョン3:Hangfireの定期ジョブを削除Do something 2
問題:エラーは「タイプをロードできませんでした...」というエラーが発生しているため、削除する必要があります。
これには少し遅れましたが、うまくいけば他の人に役立つでしょう。私は同じ状況で立ち往生しました。最後に HangFireの定期的なタスクデータ の答えが私を助けてくれました。
JobStorage
を使用して、繰り返し発生するすべてのジョブをループ処理し、次のようにそれぞれを順番に削除します。
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
もっと良い方法があるとは思いますが、見つけられませんでした
paulの答え は役に立ちましたが、API APIは変更されたようです。 Hangfire 1.6.20を使用して、StorageConnectionExtensions
から繰り返しジョブを取得する必要がありました
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in StorageConnectionExtensions.GetRecurringJobs(connection))
{
RecurringJob.RemoveIfExists(recurringJob.Id);
}
}
次のコードを使用できます。
var recurringJobs = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs();
foreach (var item in recurringJobs)
{
RecurringJob.RemoveIfExists(item.Id);
}