sue.spring.quartz.cron=*/5 * * * * ?
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
package com.luke.demo.schedule; import org.quartz.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QuartzConfig { @Value("${sue.spring.quartz.cron}") private String testCron; /** * 创建定时任务 */ @Bean public JobDetail quartzTestDetail() { JobDetail jobDetail = JobBuilder.newJob(QuartzTestJob.class) //添加认证信息 .withIdentity("quartzTestDetail", "QUARTZ_TEST") .build(); return jobDetail; } /** * 创建触发器 */ @Bean public Trigger quartzTestJobTrigger() { //执行频率 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(testCron); //创建触发器 Trigger trigger = TriggerBuilder.newTrigger() .forJob(quartzTestDetail()) //添加认证信息 .withIdentity("quartzTestJobTrigger", "QUARTZ_TEST_JOB_TRIGGER") //添加执行规则 .withSchedule(cronScheduleBuilder) .build(); return trigger; } }
ここでのQuartzTestJobは次のとおりです。メソッドexecuteInternal 定期的に実行する必要があるタスクを次に示します。
public class QuartzTestJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println("现在是"+ new Date()); } }
プロジェクトが開始されると、設定された頻度に従って出力は次のようになります:
もちろん、スケジュールされたタスクを開始することもできます。自動車ローン ビジネスのリスク管理システムに取り組んでいたとき、私は 3 者からデータを要求し、積極的に要求し、スケジュールされたタスクで結果をポーリングしました。
メッセージ キューを使用した実装も非常に高速であるようです。遅延メッセージはこのビジネス要件を満たすことができます。データを要求してから、遅延メッセージをメッセージ キューに入れます。時間が来たら、それが機能しない場合は、別の遅延メッセージをメッセージ キューに入れます。スケジュールされたタスクと比較した場合の利点は、CPU のアイドル状態が回避され、パフォーマンスが向上することです。
以上がQuartz を使用して Java でスケジュールされたタスクを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。