前言
有这样一种业务场景,需要在主业务流程走完后处理一些其他业务。这些业务不影响给用户返回数据,因此可以调用异步线程处理后,主线程给用户返回数据,能够很好地提高响应速度,比如记录本次操作的日志、给用户推送app、短信消息提醒等。Google Guava库可以帮我们做到这一点,它使用发布-订阅的模式,发布者将业务数据打包到一个实体类当中,并调用异步总线类的发布方法,就可以由订阅者(一个独立出来的方法)去进行异步消费处理,可以将核心业务与其余业务解耦,既保证了核心业务代码的简洁,又可以很好复用通用业务代码。以下是这个库的接入方式。
1、引入依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
2、构建处理异步事件线程池
@Configuration
public class ExecutorConfig {
/** *******异步事件线程池******** */
@Bean
public ThreadPoolTaskScheduler eventPool() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
// 设置线程池线程前缀
taskScheduler.setThreadNamePrefix("event");
// 设置核心线程数为jvm可使用cpu核心数
taskScheduler.setPoolSize