У меня есть два экземпляра одного и того же приложения, которое использует одну базу данных (оракул).
Приложения на основе Spring Data (CrudRepository).
Проблема:
каждому экземпляру приложения необходимо прочитать строки из таблицы и заблокировать их, чтобы предотвратить чтение (и обработку) из другого экземпляра. Я реализовал это методом CRUD repo read list методом. а затем для каждого элемента в списке я устанавливаю свойство busy и вызываю метод CRUD save для каждого.
Но это не совсем безопасно для параллелизма: второй экземпляр может прочитать тот же список, прежде чем первый экземпляр пометит каждый элемент как занят и сохранит.
У меня есть идея обновить каждую строку с некоторым UID в начале, а затем получить список с этим UID. но это как шип
Как я могу решить это? Сделки? Замки? Thx