Как организовать последовательное выполнение одинаковых запросов для пользователя?
У меня в проекте используется spring и jdbc для чтения/записи в sql базу.
Есть куча пользователей которые обновляют свою информацию. Надо как-то блокировать повторные запросы в базу, т.е. есть метод writeToDb(...) внутри несколько вызовов storedProcedure, надо что бы для текущего пользователя, одновременные вызовы этого метода работали последовательно. Если он вызвал эндпоинт на сервере два или более раза подряд, то сначала выполнится первый запрос, после его завершения второй и т.д.
В общем как проще организовать транзакции на уровне пользователя для конкретного метода?
Вариантов несколько: первый - блокировками типа мьютекса, второй очередями с флагом.
Но, вообще-то это должна сама база данных разруливать своими блокировками и транзакицями!
запустили транзакцию, делаем работу, закоммитили. если данные внутри транзакции стали невалидные, то база откатит транзакцию, а нам вернет ошибку.