У меня уже был настроен проект Spring Boot на моей машине с классом конфигурации, как показано ниже,
@Configuration
@EnableWebMvc
@EnableTransactionManagement
public class MyConfiguration extends WebMvcConfigurerAdapter {
...
...
}
Я просто добавил @EnableAsync
к нему и ниже переопределенный метод,
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@EnableAsync
public class MyConfiguration extends WebMvcConfigurerAdapter {
...
...
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(3600000);
}
}
Я просто отнес ваш метод к одному из моих классов контроллеров и нажал на него от чванства.Я не вижу проблемы в течение нескольких минут.Когда я добавляю ваш метод без вышеуказанных изменений в конфигурацию, я получаю
2018-10-24 11:35:55.085 ERROR 78852 --- [nio-8080-exec-6] c.h.a.a.aop.MyExceptionHandler : Async timeout for GET [/test/common/streamtest]
, так что, кажется, все работает нормально для меня.
Мое единственное предположение из вашего кода состоит в том, что вы, возможно, поставили @EnableAsync
в неправильном месте.
Кроме того, держите вещи минимальными и не экспериментируйте с ThreadPoolTaskExecutor()
сейчас, и пусть ваш запрос будет выполнен по умолчанию - SimpleAsyncTaskExecutor
.Как только ваш Async работает с пользовательским таймаутом, вы можете подключить его позже.
Я запускаю приложение во встроенном коте.