数据库轮询器Java EE / Spring / Hibernate

时间:2015-07-29 22:13:48

标签: java database spring hibernate java-ee

我正在使用Java EE和Spring Framework以及Hibernate。我想写一个非常简单的数据库轮询器,它执行以下操作

  1. 每秒轮询数据库
  2. 如果某行中的某个列具有我想要的值,请停止轮询并返回成功。
  3. 如果轮询持续10秒或更长时间,则返回失败
  4. 我已经研究过Java的ScheduledExecutorServiceExecutorService,我认为我可以能够用这些来做我想做的事情。我的问题是, Spring / Hibernate内置了哪些内容可以更优雅地实现这一目标?

1 个答案:

答案 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);