方案: 两个独立的主机运行一个弹簧批量应用程序,其中一个cron设置为每5分钟触发一次。 它从数据库中读取查询 - “让我记录在哪里”running = false“
我尝试过使用PESSIMISTIC_WRITE,但似乎没有为我做任何事情。试过OPTIMISTIC_FORCE_INCREMENT,在这种情况下我得到了OptimisticLockingException。但是,在我的代码中,我执行以下操作
while (true) {
try{
List<Event> events = eventRepo.findEvents(true);
for (Event event : events) {
execute(event);
}
return events.size();
}catch(Exception e){
log.debug("Exception found");
continue;
}
}
我在这里的假设是,它第一次遇到乐观锁定的感知时会尝试在“findEvents”中重新运行查询。但是,我看到它进入该方法并立即尝试更新。在host2首次尝试后,日志中未显示任何选择状态。