@Scheduled アノテーションを使用して cron ジョブを実行しています。スケジューリングはしばらく機能しますが、その後停止します。コードの簡略化されたスニペットを示します。
これはスケジューラです:
//org.springframework.scheduling.annotation.Scheduled
@Scheduled("*/30 * * * * *")
public void performTask() {
logger.info("Starting agent");
getAgentAsyncTask().execute();
logger.info("Ending agent");
}
これはスケジューラによって実行されるタスクです
//org.springframework.scheduling.annotation.Async
@Async(TASK_EXECUTOR)
@Override
public void execute() {
logger.info("Starting task");
//send some rest requests
logger.info("Ending task");
}
両方: 「開始エージェント」と「終了エージェント」は同じ回数ログに記録されます。ということで、各日程は順調に終了。
両方: 「タスクの開始」と「タスクの終了」は同じ回数記録されます。したがって、間違いなく、「タスク」は物事をブロックしていません。
しかし、しばらくするとログが停止します。問題は何ですか?
ここで、TASK_EXECUTOR は次の Bean です。
@Bean(TASK_EXECUTOR)
public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
te.setMaxPoolSize(15);
te.setCorePoolSize(15);
te.initialize();
return te;
}
春のバージョン:
4.1.6.リリース