Может ли API Request (GET Call) вернуть ответ клиенту и запустить фоновую задачу для завершения запроса - PullRequest
0 голосов
/ 08 мая 2019

Я использую Spring Boot 1.4 и Java8. Я хочу знать, возможно ли это, если я получу запрос на получение API в контроллере. Я немедленно возвращаю ответ клиенту и затем создаю фоновую задачу для запроса (которая обрабатывает сценарии успеха и исключений). Я понимаю, что мы можем использовать завершаемое будущее для асинхронной обработки, но все же из метода контроллера для этого API мы обычно отправляем ответ после использования затем применить, в исключительных случаях или получить. Это значит, что мы создали новую тему. Основная тема еще не бесплатна. Я ищу хит и забыл вид использования. Пожалуйста, предложите, как это возможно.

1 Ответ

1 голос
/ 08 мая 2019

как указано в комментариях, вы можете использовать асинхронную функциональность из Spring. Для этого вам понадобится такая конфигурация, как

@EnableAsync
@Configuration
public class AsyncConfig {
    @Bean
    public Executor threadPoolTaskExecutor() {
        return new ConcurrentTaskExecutor(Executors.newCachedThreadPool());
    }
}

затем добавьте аннотацию к методу, выполняющему фоновую задачу

@Async
void runBgTask() { /* ... */ }

и вызовите его в вашем методе контроллера

@GetMapping("/foo")
public Foo hello() {
    runBgTask();
    return new Foo();
}
...