Код: Выделить всё
@Slf4j
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
private static final int MAX_POOL_SIZE = 50;
private static final int CORE_POOL_SIZE = 20;
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setBeanName("taskExecutor");
taskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
taskExecutor.setCorePoolSize(CORE_POOL_SIZE);
taskExecutor.setThreadNamePrefix("async-task-thread-pool");
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setAwaitTerminationSeconds(60 * 10);
taskExecutor.setRejectedExecutionHandler(
(r, executor) -> log.warn("current thread pool is full, reject to invoke."));
taskExecutor.initialize();
return taskExecutor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return (ex, method, params) ->
{
log.error("invoke async method occurs error. method: {}, params: {}",
method.getName(), JSON.toJSONString(params), ex);
throw new RuntimeException();
};
}
}
Код: Выделить всё
@Override
public Future getResult(String name);
И затем я нахожу эту страницу: https://www.baeldung.com/spring-async. Я следую руководству на этой странице — удалите аннотацию @EnableAsync в Application.class и добавьте в AsyncConfig.class. Но все равно получил то же сообщение об ошибке. Кажется, метод setBeanName() не действует. Является ли мое использование неправильным?
Кстати, я прочитал документ API EnableAsync, там написано
Примечание. В приведенном выше примере {@code ThreadPoolTaskExecutor} не является полностью управляемым bean-компонентом Spring. Добавьте аннотацию {@code @Bean} к методу {@code getAsyncExecutor()}
если вам нужен полностью управляемый компонент. В таких обстоятельствах больше нет необходимости
вручную вызывать метод {@code executor.initialize()}, поскольку он будет вызываться
автоматически при инициализации компонента.
Что означает не полностью управляемый компонент Spring? Какая часть компонента не управляется Spring?
Подробнее здесь: https://stackoverflow.com/questions/541 ... pring-boot
Мобильная версия