Quartz ソリューションを、Windows サービスとして実行できる exe にコンパイルすることを理解しています。そして、どういうわけか、この Quartz サーバーはジョブを実行します。私が得られないのは、実際に作業を行うすべてのジョブ コードをどこに配置すればよいかということです。たとえば、「ジョブ」でストアド プロシージャを呼び出したり、1 時間ごとに Web サービスを呼び出したりしたいとします。または、実行したいネイティブ VB コードがある場合はどうすればよいでしょうか? (そして、コマンド ラインから呼び出される別のスタンドアロン VB アプリを作成したくありません。) これらすべてのタイプのジョブ構成がどこに保存、コーディング、構成されるかは明らかではありませんでした。
1 に答える
最初にチュートリアルを読むことをお勧めします。Jay Vilalta のブログ
で多くの有用な情報を見つけることができます。
Quartz.Net 入門: パート 1
Quartz.Net 入門: パート 2
Quartz.Net 入門: パート 3
と
Quartz.Net 1.0 でのプログラムによるジョブのスケジューリング
また
Quartz.Net 2.0 でのプログラムによるジョブのスケジューリング
そして、 githubコードを見て、非常によく文書化された例を試すことができます.
更新:
サーバーはスケジューラです。
これは、常に実行され、クライアント アプリケーションでスケジュールしたジョブを実行する Windows サービス アプリケーションです。
私が行ったように、独自のサーバー (Windows サービス) を作成することもできます。これは、そのレイヤーと通信するためにリモーティングを使用したくなかったためです。
数行のコードを使用して、コンソール アプリケーションでジョブをスケジュールして実行することを決定できます (私はお勧めしません)。
class Program
{
public static StdSchedulerFactory SchedulerFactory;
public static IScheduler Scheduler;
static void Main(string[] args)
{
SchedulerFactory = new StdSchedulerFactory();
Scheduler = SchedulerFactory.GetScheduler();
var simpleTrigger = TriggerBuilder.Create()
.WithIdentity("Trigger1", "GenericGroup")
.StartNow()
.WithSimpleSchedule(x => x.RepeatForever().WithIntervalInSeconds(5))
.Build();
var simpleJob = JobBuilder.Create<SimpleJob>()
.WithIdentity("simpleJob", "GenericGroup")
.Build();
Scheduler.ScheduleJob(simpleJob, simpleTrigger);
Console.WriteLine("Scheduler started");
Scheduler.Start();
Console.WriteLine("Running jobs ...");
Console.ReadLine();
Scheduler.Shutdown(waitForJobsToComplete: false);
Console.WriteLine("Shutdown scheduler!");
}
}
これは仕事です:
public class SimpleJob : IJob
{
public virtual void Execute(IJobExecutionContext context)
{
JobKey jobKey = context.JobDetail.Key;
Console.WriteLine("{0} Executing job {1} ", DateTime.Now.ToString(), jobKey.Name);
}
}
ここからテスト プロジェクトをダウンロードできます( VerySimpleQuartzApp )。
上記のアプリケーションは、トリガー/ジョブ情報を保存しません。
こことここ で説明されているように、ジョブ/トリガーの情報を XML ファイルに保存するかどうかを決定できます。
または、ジョブ/トリガーをデータベースに保存して、スケジューラ (通常は Windows サービス) がそれらの情報を読み取ってジョブを実行できるようにすることもできます。
サーバーと (リモーティング経由で) 通信し、ジョブをスケジュールして実行できる例を探しているなら、これがその例です。
ジョブの開始/停止またはスケジュールに使用できるオープン ソース プロジェクト (マネージャー) がいくつかあります。ここで私の答えを読んでください。