запросы в спринговом контроллере?
Условно у меня есть ручка, которая связана со сложными запросами в бд, выполняющимтся несколько минут.
Как мне исключить возможность параллельного запуска, до тех пор пока не завершится текущее выполнение?
оптимистик локи
Сделать один тред в сервлет-контейнере 🙂
ээ, немного кода пописать ? пришел запрос в контроллер, взяли блокировку, послали запрос в бд, отпустили блокировку.
Это точно не пойдёт. Нужен 1 метод с подобным поведением, а все остальные должны быть со стандартным поведением
Что такое оптимистик локи?
Это чтобы запросы в параллель бежали
Так мне же наоборот нужно исключить возможность параллельного выполнения запроса
Я не могу комментировать оптимистик лок. Поищи ключевое слово synchronized, если про джаву речь идёт.
почитай за select for update
Вопрос про контроллер же 🤷♂️
вопрос про задачу. просто он его задал в контексте контроллера.
Именно. В идеале чтобы запрос не уходил дальше слоя контроллера, если уже выполняется предыдущий
Ну вам и правда должен подойти тупо synhronized
А инстансов много может быть или один?
Лучше явный семафор и tryAquire
Обсуждают сегодня