#spring-boot #asynchronous
Вопрос:
Здесь я хочу сделать приведенный ниже код асинхронным. Я прочитал, что @Async
аннотации, если я добавлю эту аннотацию, достаточно ли этого, или в основном приложении также необходимо добавить сюда, необходимо также рассмотреть еще один момент, если я вызываю этот API несколько раз, второй вызов должен подождать до завершения первого вызова (пример: я позвонил в первый раз, для завершения может потребоваться 5 минут, но снова я снова вызвал в фоновом режиме первый вызов все еще выполнялся, после завершения первого вызова только тогда он должен запустить мой второй вызов).
@Operation(summary = "load operation")
@PostMapping(value = "delta/load")
public void sendDeltaOutbound() {
cppService.loadData();
}
Ответ №1:
У вас должно быть
@SpringBootApplication
@EnableAsync
public class AsyncMethodApplication {
}
В методе обслуживания вы должны иметь @Async
@Service
public class FooService {
@Async
public BarFuture<Fuu> findFuuBaa(String baa) throws InterruptedException {
// ...
}
}
Комментарии:
1. покрывает ли это очередь запросов cal (как то, что я упоминал в вопросе), или нам нужно использовать аннотацию @Scheduled поверх этого.