我们正在使用 @Schedule
EJB 注释来启动计划作业,每 x 秒执行一次增量 SOLR 导入。当然,我们希望尽可能减少索引的时移。目前我尝试每 5 秒执行一次增量。
所以我的问题是:我能否确保作业只被调用一次? 那么假设索引持续时间超过 5 秒,下一个调度调用是否会等到前一个返回?
最佳答案
是的。您可以将 bean 设为 @Singleton
并使用 @Lock(LockType.Write)
以确保计时器不会并行运行。请注意,LockType.Write
是 Singleton 中的默认设置。因此,即使是带有注释的显式提及也不需要。
关于annotations - 如何使@Schedule 方法一次只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164176/