我正在使用Java EE和Spring Framework以及Hibernate。我想写一个非常简单的数据库轮询器,它执行以下操作
我已经研究过Java的ScheduledExecutorService和ExecutorService,我认为我可以能够用这些来做我想做的事情。我的问题是, Spring / Hibernate内置了哪些内容可以更优雅地实现这一目标?
答案 0 :(得分:0)
一种替代方法是像这样使用TaskScheduler:
1)使用TaskScheduler创建一个bean
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(50);
threadPoolTaskScheduler.setThreadNamePrefix("Scheduler-Pool-");
return threadPoolTaskScheduler;
}
2)创建以CRON标记计划的作业
ScheduledFuture<?> scheduledFuture = taskScheduler.schedule(() -> aRunnable, new CronTrigger("0 0/5 * * * ?")); // per five seconds
3)当满足条件或数据库轮询超时时,请禁用任务
scheduledFuture.cancel(false);