1

月曜日から金曜日のみ、午前 9 時、午後 12 時、午後 5 時にジョブを実行するようにスケジュールする必要があります。FluentSchedulerに関するドキュメントは見つかりませんでした。

仕事のスケジュールを複数(5日間別々に)持つことでそれを行うことができますが、指定された時間と日にこれを繰り返し行う単一のスケジュールを持つことはできますか?

4

4 に答える 4

0

私は同じ問題に遭遇しました。FluentScheduler は、非常に複雑なスケジュールを処理できるほど堅牢ではありません。より良い解決策は、http: //www.quartz-scheduler.net/ を使用することです。これは非常に柔軟で、Topshelf によってサポートされており、ほとんどの IoC コンテナーをサポートしています。たとえば、私が使用したサービスでは:

    config.Service<Service>(sc =>
      { sc.ScheduleQuartzJob(configurator =>
        configurator.WithJob(
        () => JobBuilder.Create<DataLoadJob>().WithIdentity("DataLoad", "Job1").Build())
                        .AddTrigger(() => TriggerBuilder.Create().WithIdentity("DataLoadSchedule", "Job1")
                        .WithSimpleSchedule(builder => builder.WithIntervalInSeconds(10).RepeatForever()).Build()));
             sc.ScheduleQuartzJob(configurator =>
                 configurator.WithJob(
                     () => JobBuilder.Create<DataMergeJob>().WithIdentity("DataMerge", "Job1").Build())
                     .AddTrigger(() => TriggerBuilder.Create().WithIdentity("DataMergeSchedule", "Job1")
                     .WithCronSchedule("0 30 7-20/3 ? * MON-FRI").Build()));
             sc.ConstructUsingSimpleInjector();
             sc.WhenStarted((s, h) => s.Start(h));
             sc.WhenStopped((s, h) => s.Stop(h));
         });

これは、SimpleInjector と Quartz を使用する Topshelf サービスのフラグメントです。

于 2016-11-28T17:39:20.567 に答える
0

最も簡単な解決策は、IJob の Execute() メソッドでそのエントリ ポイントの曜日をチェックし、土曜日または日曜日にすぐに救済することだと思いました...

于 2016-12-05T14:00:34.160 に答える