ホームページ >Java >&#&チュートリアル >Spring で再デプロイせずにジョブを動的にスケジュールするにはどうすればよいですか?
Spring でジョブを動的にスケジュールする
背景:
Spring Scheduling ライブラリはプロセスを簡素化します注釈を使用して定期的にタスクをスケジュールする(@予定)。ただし、アプリケーションを再デプロイせずに、スケジュールされた時間を動的に調整することが必要になる場合があります。これは、トリガー メカニズムを使用して実現できます。
トリガーの使用:
トリガーを使用すると、スケジュールされたタスクの次回の実行時間をその場で計算できます。このアプローチは、動的スケジューリングに注釈を使用する際の制限を回避します。実装方法は次のとおりです:
例:
この例では、カスタム トリガーが作成され、から取得したプロパティ値に基づいて次回の実行時間を動的に決定します。
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { @Autowired Environment env; @Bean public MyBean myBean() { return new MyBean(); } @Bean(destroyMethod = "shutdown") public Executor taskExecutor() { return Executors.newScheduledThreadPool(100); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); taskRegistrar.addTriggerTask( new Runnable() { @Override public void run() { myBean().getSchedule(); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { Calendar nextExecutionTime = new GregorianCalendar(); Date lastActualExecutionTime = triggerContext.lastActualExecutionTime(); nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date()); nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); // Obtain value programmatically return nextExecutionTime.getTime(); } } ); } }
この構成では:
トリガーを使用すると、スケジュールされた時間を動的に調整できます。実行時にロジックや値を利用できるため、タスクのスケジュール設定の柔軟性と制御が可能になります。
以上がSpring で再デプロイせずにジョブを動的にスケジュールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。