スケジュールされたタスクを実行したい場合、 高可用性の要件がある場合、または単に
すぐに開始したい場合、 簡単に開始したい場合、次に、[まさにそのとおりです] を選択します。
<dependency> <groupId>xin.altitude.cms</groupId> <artifactId>ucode-cms-quartz</artifactId> <version>1.5.4.1</version> </dependency>
org.quartz.Job インターフェイスを実装し、アノテーションを使用します
CronExp タスクのスケジュール戦略を追加します。アノテーション
Component を使用してタスクをコンテナに挿入します。
@Component @DisallowConcurrentExecution @CronExp(cron = "0/5 * * * * ?") public class DemoJob implements Job { @Override public void execute(JobExecutionContext context) { System.out.println("任务1:" + LocalDateTime.now()); } }
jobId のタスクを手動でトリガーします。
http://localhost:8080/cms-api/quartz/job/{jobId}
Unique、 および
known である必要があるため、スケジュールされたタスクを作成するときに手動で指定する必要があります。
@CronExp(id = 1, cron = "0/5 * * * * ?")
CronExp の id 属性にアノテーションを付けることで指定できます。タスク ID が明示的に指定されていない場合は、ランダムな ID が使用されます。既知の条件が満たされていないため、したがって、手動でトリガーすることはできません。
public void execute(JobExecutionContext context) { /* 如果在调用任务时传入了参数,则能够从Map中获取 */ Map<String, Object> dataMap = context.getMergedJobDataMap(); /* 比如从Map中获取一个键值对,一般来说参数均为基本数据类型 */ Object key = dataMap.get("key"); System.out.println("任务2:" + LocalDateTime.now() + ": " + key); }
JobExecutionContext オブジェクトからマップを解析して、パラメーターの挿入を完了できます。
http://localhost:8080/cms-api/quartz/job/1?key=a
Quartz の同時実行性とは、タスクの実行時間がタスクのスケジューリング周期を超え、前のタスクが実行されていない場合に、新しいタスクを実行するかどうかを指します。
DisallowConcurrentExecution アノテーションを追加してタスクの同時実行を無効にします。
spring: quartz: properties: org.quartz.jobStore.isClustered: true org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.dataSource: qzDS org.quartz.dataSource.qzDS.driver: com.mysql.cj.jdbc.Driver org.quartz.dataSource.qzDS.URL: jdbc:mysql://localhost:3306/quartz-demo org.quartz.dataSource.qzDS.user: root org.quartz.dataSource.qzDS.password: 123456
データベース接続を構成した後、SQL スクリプトを使用し、データベースの初期化に注意してください
以上がQuartz を使用して Java 高可用性スケジュール済みタスクを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。