クラスタ内のすべてのサーバでhangfireに登録された定期ジョブが必要な状況があります。hangfireすべてのサーバで繰り返しジョブ
(ジョブはローカルでいくつかのファイルをコピーすることですので、定期的にすべてのサーバー上で実行する必要があります)
は、これまでのところ私は、n個のサーバー用のn個のジョブでその結果、サーバー名のIDと同じジョブを登録しようとしています:
RecurringJob.AddOrUpdate(Environment.MachineName,() => CopyFiles(Environment.MachineName), Cron.MinuteInterval(_delay));
およびジョブ自体をチェックし、それが正しいサーバーであり、それがある場合にのみ、何かをする場合:
public static void CopyFiles(string taskId)
{
if (string.IsNullOrWhiteSpace(taskId) || !taskId.Equals(Environment.MachineName))
{
return;
}
// do stuff here if it matches our taskname
}
これで問題は、すべてのジョブのSQLステートメ最初のサーバー上のesが完全であるとマークされ、結果が他のサーバーによって実行されないためです。
ジョブがすべてのサーバーで実行されるようにする方法はありますか。
または1つのサーバーで特定のジョブを処理できるようにする方法がありますか?すなわち、それを作成したサーバでジョブを目標とする。
:
だから私はに私のエンキューを変更:
そして、私は私のサーバーを起動するとき、私はこれを行いますその可能性があると述べた。 – Zapnologica