Вы, конечно, можете сделать это с dlock . Представьте себе контроллер A и службу A, где контроллер A вызывает службу A. Если у вас есть метод doSomeWork
в службе A, аннотированный dlock, вы можете безопасно вызывать метод из контроллера A столько раз, сколько вам нужно, и он будет запускать службу только один раз. до времени ожидания Вот конкретный пример.
Служба А должна быть примерно такой.
@TryLock(name = "doSomeWork", owner = "serviceA", lockFor = ONE_MINUTE)
public void doSomeWork() {
//...
}
Контроллер А будет примерно таким.
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public void doSomeWork() {
serviceA.doSomeWork();
}
См. этот пост для получения дополнительной информации.