Spring Boot使用@Async实现异步调用:自定义线程池
程序员文章站
2022-05-13 20:53:09
...
场景:
1:微服务各个应用程序将日志收集到日志服务系统中 ,消费日志收集到日志系统时 如果上传日志信息花费相当长的时间 ,此时的应用对外提供的服务收到阻塞 。
2:微服务中的每个服务集成Kafka 时 启动服务阻塞
解决方案: 自定义线程 异步调用 (核心配置如下)
@Configuration
@EnableAsync
public class ExecutorConf {
@Bean(value = "asyncTask")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(200);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("asyncTask-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
@Autowired
private CourseFileService courseFileService;
@KafkaListener(topics = "your_topic")
@Async("asyncTask")
public void dealFileInfo(List record ) {
String value = record.get(0).toString();
JSONObject ob = JSONObject.parseObject(value);
重启项目
上一篇: Es9新特性