BLOGTIMES
2017/09/28

Quartz で定期的にタスクを実行する

  java  programming 
このエントリーをはてなブックマークに追加

Java のアプリケーション内で特定の動作を特定の日時に実行するためには cron のような機能を自力で実装する必要があります。
今回はそんな機能をお手軽に実現できる Quartz Enterprise Job Scheduler というライブラリを使って実現してみました。

Quartz には Cron Trigger という機能があり、cron のような書式で実行タイミングを制御する機能があります。通常の cron は分単位ですが、こちらは1桁設定が細かくなっていて秒単位でのタスク実行が可能です。例えば 「0/5 * * * * ?」のような指定をすると5秒ごとにタスクを実行することができます。

Quartz の使い方

Quartz を使うためにはタイミングを指示するための Trigger と定期実行される実体となる Job という2つのクラスが必要になります。
今回は5秒ごとにログ出力を行うような超簡単な例になりますが Maven のプロジェクトとして hsur/QuartzExample にアップロードしておいたので、興味がある方はお試しください。

実際に実行してみると、以下のように5秒ごとにログ出力されることが確認できます。

[INFO] 28 9 10:08:08.313 午前 main [jp.cles.java.QuartzExample.App] Group1.MyJob1 は Fri Sep 28 10:08:10 JST 2017 に実行するようにセットアップされました。 右の cron 定義に従って繰り返し実行されます: 0/5 * * * * ? [INFO] 28 9 10:08:08.313 午前 main [org.quartz.core.QuartzScheduler] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. [INFO] 28 9 10:08:10.015 午前 DefaultQuartzScheduler_Worker-1 [jp.cles.java.QuartzExample.MyJob] Group1.MyJob1 は Fri Sep 28 10:08:10 JST 2017 に起動されました [INFO] 28 9 10:08:15.003 午前 DefaultQuartzScheduler_Worker-2 [jp.cles.java.QuartzExample.MyJob] Group1.MyJob1 は Fri Sep 28 10:08:15 JST 2017 に起動されました [INFO] 28 9 10:08:20.002 午前 DefaultQuartzScheduler_Worker-3 [jp.cles.java.QuartzExample.MyJob] Group1.MyJob1 は Fri Sep 28 10:08:20 JST 2017 に起動されました

実際のコード

App.java
MyJob.java


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9655
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン