У нас есть микро-сервис, представленный как API отдыха. Задача одной конечной точки - вызвать службу, которая выбирает записи из базы данных, имеющие значение атрибута As Created
, а затем обрабатывает их. После завершения обработки эти записи обновляются со значением атрибута как Ready
. Это сделано для того, чтобы в следующий раз при вызове этого API те же записи не собирались для обработки.
Проблема : операция, выполняемая во время обработки, не идемпотентна. И, следовательно, если клиент вызывает этот API до завершения предыдущей обработки, он снова выбирает те же записи, которые обрабатываются, и вызывает проблему. Кроме того, сервисный метод, который выполняет всю эту обработку, также является @Async
методом, который дополнительно увеличивает сложность.
Можно ли как-нибудь избежать вызова сервисного метода, если предыдущая обработка еще не закончена?