【问题标题】:Database Poller Java EE/Spring/Hibernate数据库轮询器 Java EE/Spring/Hibernate
【发布时间】:2015-10-21 02:54:37
【问题描述】:

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

  1. 每秒轮询一次数据库
  2. 如果某行某列有我想要的值,停止轮询,返回成功。
  3. 如果轮询持续了 10 秒或更长时间,则返回失败

我已经研究了 Java 的 ScheduledExecutorServiceExecutorService,我认为我也许可以用这些来做我想做的事。我的问题是,Spring/Hibernate 中是否有内置的东西可以更优雅地做到这一点?

【问题讨论】:

  • blog.databasepatterns.com/2014/04/… 显示如何通知客户端数据库更改,作为轮询的替代方法
  • 你在使用什么服务器,我的直觉告诉我你在 Tomcat/Jetty 上运行 Spring -> 即不是 Java EE
  • 我们使用 Jetty。代码库是用 Java EE 编写的

标签: java database spring hibernate jakarta-ee


【解决方案1】:

另一种方法是像这样使用 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) 当某个条件满足或db poll超时时,禁用该任务

scheduledFuture.cancel(false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多