Quartz でカスタム JobListener を作成するにはどうすればよいですか?

Nov 24, 2025

伝言を残す

ちょっと、そこ! Quartz のサプライヤーとして、私は Quartz とそのさまざまな機能をよく理解することがいかに重要であるかを直接見てきました。 Quartz ゲームを実際にレベルアップできる機能の 1 つは、カスタム JobListener の作成です。このブログ投稿では、Quartz でカスタム JobListener を作成するプロセスを説明します。それでは、始めてみましょう。

そもそも JobListener とは何ですか?

カスタム JobListener の作成に入る前に、JobListener とは何かを簡単に説明しましょう。 Quartz では、JobListener はジョブに関連するイベントをリッスンできるインターフェイスです。これらのイベントには、ジョブが実行されようとしているとき、実行が完了したとき、ジョブが拒否されたときなどが含まれます。 JobListener を実装すると、これらのイベントに基づいてカスタム アクションを実行できます。これは、ログ記録、監視、さらには他のジョブのトリガーなどに非常に役立ちます。

カスタム JobListener を作成する理由

Quartz にはすでにいくつかの組み込みリスナーが提供されているのに、なぜカスタム JobListener を作成する必要があるのか​​疑問に思われるかもしれません。組み込みのリスナーは基本的な機能には優れていますが、場合によっては、特定のニーズに合わせてカスタマイズしたものが必要になることがあります。各ジョブの実行に関する詳細情報をログに記録したい場合や、ジョブが失敗したときにチームに通知を送信したい場合があります。理由が何であれ、カスタム JobListener を作成すると、必要なことを正確に実行できる柔軟性が得られます。

ステップ 1: JobListener インターフェイスを実装する

カスタム JobListener を作成する最初のステップは、ジョブリスナーインタフェース。このインターフェイスには、実装する必要があるメソッドがいくつかあり、それぞれが異なるジョブ イベントに対応しています。基本的なカスタム JobListener の実装の例を次に示します。

0200-01176 QUARTZ, COVER, TOP, 6" PIK II PCII 2nd Source New0200-20054 Insulator Qtz 6" SMF ATA Preclean

org.quartz.JobExecutionContext をインポートします。 org.quartz.JobExecutionException をインポートします。 org.quartz.JobListener をインポートします。 public class CustomJobListenerimplemented JobListener { @Override public String getName() { return "CustomJobListener"; } @Override public void jobToBeExecuted(JobExecutionContext context) { System.out.println("Job " + context.getJobDetail().getKey().getName() + " が実行されます。"); } @Override public void jobExecutionVetoed(JobExecutionContext context) { System.out.println("Job " + context.getJobDetail().getKey().getName() + " は拒否されました。"); } @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { if (jobException == null) { System.out.println("Job " + context.getJobDetail().getKey().getName() + " は正常に実行されました。"); } else { System.out.println("Job " + context.getJobDetail().getKey().getName() + " が例外で失敗しました: " + jobException.getMessage()); } } }

この例では、ジョブ実行イベントに関する情報を記録する単純なカスタム JobListener を作成しました。のgetNameメソッドはリスナーの名前を返します。この名前は、Quartz がリスナーを識別するために使用します。の実行されるジョブメソッドはジョブが実行される直前に呼び出されます。ジョブ実行拒否ジョブが拒否された場合にメソッドが呼び出され、ジョブが実行されましたこのメソッドは、ジョブが成功したかどうかに関係なく、ジョブの実行が完了した後に呼び出されます。

ステップ 2: カスタム JobListener を登録する

カスタム JobListener を実装したら、次のステップはそれを Quartz スケジューラに登録することです。これを行うには、addJobListenerの方法スケジューラークラス。カスタム JobListener を登録する方法の例を次に示します。

org.quartz.JobBuilder をインポートします。 org.quartz.JobDetail をインポートします。 org.quartz.Scheduler をインポートします。 org.quartz.SchedulerException をインポートします。 org.quartz.Trigger をインポートします。 org.quartz.TriggerBuilder をインポートします。 org.quartz.impl.StdSchedulerFactory をインポートします。 public class QuartzExample { public static void main(String[] args) { try { // スケジューラーを作成します。 // ジョブの詳細を作成します JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") .build(); // トリガーを作成します Trigger トリガー = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .build(); // カスタムジョブリスナーを登録 CustomJobListener listenr = new CustomJobListener();スケジューラー.getListenerManager().addJobListener(リスナー); // ジョブをスケジュールします。 // スケジューラを開始します。 // スケジューラをしばらく実行させます Thread.sleep(5000); // スケジューラをシャットダウンします。 catch (SchedulerException | InterruptedException e) { e.printStackTrace(); } } }

この例では、単純な Quartz スケジューラを作成し、ジョブがすぐに実行されるようにスケジュールしました。また、カスタム JobListener をスケジューラに登録しました。addJobListener方法。これで、ジョブが実行されるたびにカスタム リスナーに通知が送信され、ジョブ実行イベントに関する情報がログに記録されます。

ステップ 3: JobListener をカスタマイズする

これで基本的なカスタム JobListener が起動して実行できるようになったので、特定のニーズに合わせてカスタマイズを開始できます。たとえば、開始時刻、終了時刻、期間など、各ジョブの実行に関するより詳細な情報をログに記録したい場合があります。ジョブが失敗したときにチームに通知を送信したり、現在のジョブの結果に基づいて別のジョブをトリガーしたりするコードを追加することもできます。

以前の JobListener をカスタマイズして、より詳細な情報をログに記録する方法の例を次に示します。

org.quartz.JobExecutionContext をインポートします。 org.quartz.JobExecutionException をインポートします。 org.quartz.JobListener をインポートします。 java.time.Instant をインポートします。 public class CustomJobListener は JobListener { private Instant startTime を実装します。 @Override public String getName() { return "CustomJobListener"; @Override public void jobToBeExecuted(JobExecutionContext context) { startTime = Instant.now(); System.out.println("ジョブ " + context.getJobDetail().getKey().getName() + " は " + startTime に実行されようとしています); } @Override public void jobExecutionVetoed(JobExecutionContext context) { System.out.println("Job " + context.getJobDetail().getKey().getName() + " は拒否されました。"); @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { Instant endTime = Instant.now();長い期間 = endTime.toEpochMilli() - startTime.toEpochMilli(); if (jobException == null) { System.out.println("Job " + context.getJobDetail().getKey().getName() + " は " + endTime + " に " +duration + " ミリ秒で正常に実行されました。"); } else { System.out.println("Job " + context.getJobDetail().getKey().getName() + " が例外で失敗しました: " + jobException.getMessage() + " at " + endTime + " after " +duration + " ミリ秒。"); } } }

この更新された例では、開始時間ジョブの実行がいつ開始されたかを追跡するための変数。また、実行されるジョブ開始時刻を記録する方法とジョブが実行されましたジョブの実行時間を計算し、終了時刻とともにログに記録するメソッド。

関連する水晶製品

クォーツサプライヤーとして、当社はお客様のニーズを満たす高品質なクォーツ製品を幅広く提供しています。当社の人気製品には次のようなものがあります。0200-01176 クォーツ、カバー、トップ、6 インチ PIK II PCII0200-20054 絶縁体 Qtz 6 インチ SMF ATA プレクリーン、そして0200-36691 リング、シングル、薄型、150MM SMF。これらの製品は、耐久性、信頼性が高く、さまざまなクォーツ アプリケーションと互換性があるように設計されています。

結論

Quartz でカスタム JobListener を作成することは、Quartz アプリケーションにカスタム機能を追加する強力な方法です。を実装することで、ジョブリスナーインターフェイスを使用してスケジューラにリスナーを登録すると、ジョブ実行イベントをリッスンし、それらのイベントに基づいてカスタム アクションを実行できます。情報のログ記録、ジョブ パフォーマンスの監視、または他のジョブのトリガーのいずれを行う場合でも、カスタム JobListener を使用すると、必要なことを正確に実行できる柔軟性が得られます。

当社の Quartz 製品についてさらに詳しく知りたい場合、またはカスタム JobListener の作成についてご質問がある場合は、お気軽に [購入交渉についてお問い合わせ] ください。お客様のニーズに合った適切なソリューションを見つけるお手伝いをいたします。

参考文献

  • クォーツのドキュメント。
  • Java API ドキュメント。

お問い合わせを送る