Spring では、固定間隔でタスクをスケジュールするために @Scheduled アノテーションがよく使用されます。ただし、場合によっては、アプリケーションを再デプロイせずにスケジュールを動的に調整する必要がある場合があります。これには、カスタム アプローチを使用する必要があります。
1 つの解決策は、トリガーを利用して、次の実行時間をその場で計算できるようにすることです。
次の構成コードを考えてみましょう:
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { @Autowired Environment env; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); taskRegistrar.addTriggerTask( new Runnable() { @Override public void run() { ... } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { ... // Calculate next execution time dynamically ... } } ); } }
Trigger インターフェイスは nextExecutionTime メソッドを定義します。これを使用して、要件に基づいて次回の実行時間を計算できます。この例では、Calendar クラスを使用して、環境プロパティ myRate に格納されている値に基づいて次回の実行時間を計算します。
トリガーを使用すると、タスクのスケジュールを動的に調整できます。再配置。これにより、スケジュールされた操作に対する柔軟性と制御が提供され、変化する要件に適応できるようになります。
以上が春にスケジュールされたジョブの固定レートを動的に調整するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。