2017-07-04 33 views
0

メソッド呼び出しをスケジュールしようとしています。このメソッド呼び出しは、サーバーの起動後すぐに、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秒ごと(または何時でも私がしたい)。

私はスプリングブーツを使用しています。誰でもお勧めしますか?

また、初期遅延値と固定遅延値/固定値の両方をデータベースから取得することは可能ですか?初期値もデータベースから設定したい

ありがとうございます。

+1

@Scheduled(ini​​tialDelay = 30000、fixedRate = 30000) 'を使用するだけではどうですか? –

+0

謝罪私の間違いは、私が言及すべきである、遅延はデータベースから値がフェッチされるので、その定数ではない。私は質問を更新しました。 – Manglesh

+1

それから、データベースから読み込み、 'initialDelayString'と' fixedRateString'を使って式を使う 'PropertySource'インスタンスを作成してください。 –

答えて

0

が、これはアプリケーションの起動後にメソッドを起動するために@PostConstuctアノテーションを使用します

@PostConstruct 
@Scheduled(fixedDelay=30000) 
public void testScheduling(){ 
    System.out.println("Scheduling Testing"); 
} 

のために働いていた場合、私に知らせてください。

+0

謝罪私の間違い、私が言及すべきであった、遅延はデータベースから値がフェッチされているので、その定数ではありません。私は質問を更新しました。また、固定遅延を入れずにinitialDelayだけを置くと、それはcronまたはfixeddelayの値を持つことについて不平を言う – Manglesh