У меня есть задание на основе таймера
@Component
public class Worker {
@Scheduled(fixedDelay = 100)
public void processEnvironmentActions() {
Job job = pickJob();
}
public Job pickJob() {
Job job = jobRepository.findFirstByStatus(Status.NOT_PROCESSED);
job.setStatus(Status.PROCESSING);
jobRepository.save(job);
return job;
}
}
Теперь, в большинстве случаев это должно дать мне правильный результат.Но что произойдет, если есть два экземпляра микросервиса, выполняющих этот фрагмент кода одновременно?
Как мне убедиться, что, даже если существует несколько экземпляров службы, хранилище всегда должно выполнять одну работутолько один экземпляр, а не другие экземпляры.
РЕДАКТИРОВАТЬ: Я думаю, что люди запутались / сосредоточены на @Transactional
, поэтому удалили его.Вопрос остается прежним.