プロジェクトdocumentationに基づいて、javaバージョンにはいくつかのcronベースのスケジューリングが存在します。しかし、私はネットの実装で似たようなものは見つけられません。apache ignite .netスケジュールされたタスク
私の仕事は、1日に1回、長時間実行されているジョブでキャッシュを更新することです。この場合(.net版の予定機能はありません)私はクライアントモードで起動し、データでキャッシュを更新するappを作成すると思います。そして、Windowsタスクスケジューラでこのアプリを実行します。
もっと良い解決策がありますか?あるいは良い例ですか?答えの後に実装さ
ソリューションを受け取った:
はperiodicalyジョブをスケジュールするためのFluentSchedulerを使用します。残念ながら、私が使用しようとしたHangFireが機能しませんでした。何らかの理由で現在の実行スケジューラを含むノードが失敗した場合、またはサービスが残りのノードの1つで開始され、スケジューリングジョブは失われません。
スケジューラジョブコード
public class CacheUpdateRegistry : Registry
{
private readonly IIgnite _ignite;
public CacheUpdateRegistry(IIgnite ignite)
{
_ignite = ignite;
// output to console current node id as example each 2 seconds
Schedule(() => Console.WriteLine("Recurring on node: + " + _ignite.GetCluster().GetLocalNode().Id)).ToRunNow().AndEvery(2).Seconds();
}
}
サービスコード:
public class CacheUpdateSchedulerService : IService
{
[InstanceResource]
private readonly IIgnite _ignite;
public void Init(IServiceContext context)
{
Console.WriteLine("CacheUpdateSchedulerService initialized");
obManager.Initialize(new CacheUpdateRegistry(_ignite));
}
// other code removed for brevity
}
のIgniteノードコード:
var services = _ignite.GetServices();
services.DeployClusterSingleton("cacheUpdateScheduler", new CacheUpdateSchedulerService());
「Replacation」モードで動作するキャッシュを更新するために、このようなスケジュールされたタスクを実行するCluster Singletonサービスを作成するのは正しいでしょうか? – aleha
はい、タイマー付きクラスタシングルトンサービスは良いアプローチです。 –
は、FluentSchedulerを使用してクラスタシングルトンサービスを実装しました。よく働く。 – aleha