在 Spring 中,@Scheduled 註解通常用於以固定時間間隔調度任務。但是,有時您可能需要動態調整計劃而不重新部署應用程式。這需要使用自訂方法。
一種解決方案是利用觸發器,讓您動態計算下一個執行時間。
考慮以下配置代碼:
@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 中儲存的值計算下一次執行時間。
透過使用觸發器,您可以動態調整任務的時間表,而無需重新部署。這為您的計劃操作提供了靈活性和控制力,使您能夠適應不斷變化的需求。
以上是Spring定時作業固定率如何動態調整?的詳細內容。更多資訊請關注PHP中文網其他相關文章!