欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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);

 

重启项目  

相关标签: Async