Не могу использовать @Async в Spring BootJAVA

Программисты JAVA общаются здесь
Anonymous
Не могу использовать @Async в Spring Boot

Сообщение Anonymous »

Я хочу использовать асинхронный механизм Spring Boot, вот мой код. < /p>

Код: Выделить всё

@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();
};
}

}
< /code>

И я добавляю аннотацию @async в другой метод класса. < /p>

@Override
public Future getResult(String name);
< /code>

Но когда я называю метод getResult () < /code>, он сообщается о том, что не будет компонент с именем с именем «taskexecutor»: без соответствующего исполнителя Bean Bean, найденный для квалификатора 'taskexecutor' - ни матч, ни матч, а затем и нахожу это! Страница: https: //www.baeldung.com/spring-async. Я следую над руководством этой страницы - удалить аннотацию @enableasync 
на Application.class и добавить в AsyncConfig.class . Но все же получил такое же сообщение об ошибке. Похоже, что метод setbeanName () не влияет. Мое использование неправильно? Добавьте аннотацию {@code @bean} в метод {@code getasyncexecutor ()} < /p>

Если вы хотите полностью управляемый боб. В таких обстоятельствах больше не необходимо, чтобы
вручную вызовут метод {@code executor.initialize ()}, так как это будет вызвать
автоматически, когда инициализируется фасоль. Какая часть бобов не управляется весной?

Подробнее здесь: https://stackoverflow.com/questions/541 ... pring-boot

Вернуться в «JAVA»