メソッド呼び出しをスケジュールしようとしています。このメソッド呼び出しは、サーバーの起動後すぐに、30秒ごとにスケジュールしたいと思います。 30秒後に固定遅延と初期遅延のジョブをスケジューリングする
@Configuration
@EnableScheduling
@EnableTransactionManagement
public class Schedular implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(poolScheduler());
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
testScheduling();
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
Calendar nextExecutionTime = Calendar.getInstance();
nextExecutionTime.add(Calendar.SECOND, <some value from database>);
return nextExecutionTime.getTime();
}
});
}
@Bean
public TaskScheduler poolScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setThreadNamePrefix("poolScheduler");
scheduler.setPoolSize(10);
return scheduler;
}
public void testScheduling(){
System.out.println("Scheduling Testing");
}
}
スケジュール以下のコードメソッドコードサーバは、サーバが起動した直後に開始ではなく、後:コードの下
。私はいくつかの他の設定を行う必要があることを知っているメソッドの呼び出しをスケジュールするだけで、サーバーの起動後30秒ごと(または何時でも私がしたい)。
私はスプリングブーツを使用しています。誰でもお勧めしますか?
また、初期遅延値と固定遅延値/固定値の両方をデータベースから取得することは可能ですか?初期値もデータベースから設定したい
ありがとうございます。
@Scheduled(initialDelay = 30000、fixedRate = 30000) 'を使用するだけではどうですか? –
謝罪私の間違いは、私が言及すべきである、遅延はデータベースから値がフェッチされるので、その定数ではない。私は質問を更新しました。 – Manglesh
それから、データベースから読み込み、 'initialDelayString'と' fixedRateString'を使って式を使う 'PropertySource'インスタンスを作成してください。 –