package fr.ippon.tatami.config; import fr.ippon.tatami.service.SearchService; import fr.ippon.tatami.service.elasticsearch.ElasticsearchSearchService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; @Configuration @EnableAsync @EnableScheduling public class AsyncConfiguration implements AsyncConfigurer { private final Logger log = LoggerFactory.getLogger(AsyncConfiguration.class); @Bean public SearchService searchService() { return new ElasticsearchSearchService(); } @Override public Executor getAsyncExecutor() { log.debug("Creating Async Task Executor"); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(2); executor.setMaxPoolSize(50); executor.setQueueCapacity(10000); executor.setThreadNamePrefix("TatamiExecutor-"); executor.initialize(); return executor; } }