Избежание перекрывающихся вызовов методов Spring Async - PullRequest
0 голосов
/ 02 июля 2019

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

Проблема : операция, выполняемая во время обработки, не идемпотентна. И, следовательно, если клиент вызывает этот API до завершения предыдущей обработки, он снова выбирает те же записи, которые обрабатываются, и вызывает проблему. Кроме того, сервисный метод, который выполняет всю эту обработку, также является @Async методом, который дополнительно увеличивает сложность.

Можно ли как-нибудь избежать вызова сервисного метода, если предыдущая обработка еще не закончена?

...