Quantcast
Channel: 64 Blog
Viewing all articles
Browse latest Browse all 45

Windows Azure で Quartz.NET を使う

$
0
0

Quartz.NETは .NET用のスケジューリングジョブライブラリです。
http://quartznet.sourceforge.net/

たまたま見つけたので、Windows Azureで使えるか、たまたま試してみました。

 

まずは、Windows Azure クラウドサービスを含んだプロジェクトを作成します。

そして、Quartz.NETライブラリを追加します。
NuGetからでも、Quartz.NETのサイトからダウンロードしてQuartz.dllファイルを参照設定に追加しても、どちらでもOKです。
201336213148_231

 
スケジュールジョブの設定を下記のように作成して OnStart で動かすようにします。

private void SetScheduleTask()
{
    const string JOBNAME = "SimpleJob";
    const string JOBGROUP = "SimpleJobGroup";

    var factory = new StdSchedulerFactory();
    var schedule = factory.GetScheduler();

    if (!schedule.IsStarted)
        schedule.Start();

    var job = JobBuilder.Create<SimpleJob>()
        .WithIdentity(JOBNAME, JOBGROUP)
        .RequestRecovery()
        .Build();

    // 5分間隔で実行
    var trigger1 = TriggerBuilder.Create()
        .WithIdentity(JOBNAME, JOBGROUP)
        .StartNow()
        .WithCalendarIntervalSchedule(x => x.WithIntervalInMinutes(5))
        .Build();

    // Cron 的な書き方でもOK
    var trigger2 = TriggerBuilder.Create()
        .WithIdentity(JOBNAME, JOBGROUP)
        .StartNow()
        .WithCronSchedule("0 0/5 * * * ?")
        .Build();

    schedule.ScheduleJob(job, trigger1);
}

 
次に、スケジュールジョブの処理内容を下記のように作成してみます。

namespace WorkerRole1
{
    public class SimpleJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            var msg = string.Format("{0} : SCHEDULE TASK", DateTime.UtcNow);
            Trace.WriteLine(msg, "Information");
        }
    }
}

 
以上で設定は完了です。あとは実際にデプロイして確認です。

 
たまたま今回は診断のトレースログに、たまたま5分間隔でログを書き込むようなスケジュールジョブを作成してみましたが、ちゃんと動いてますね。
201336215230_232


Viewing all articles
Browse latest Browse all 45

Trending Articles