一、创建线程池
@Configuration
public class CommonConfig {
@Bean(name = "eventExecutor")
@ConditionalOnMissingBean(name = "eventExecutor")
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(4);
taskExecutor.setMaxPoolSize(4);
taskExecutor.setKeepAliveSeconds(60);
taskExecutor.setQueueCapacity(1024 * 20);
taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
taskExecutor.setThreadNamePrefix("eventExecutor-");
taskExecutor.initialize();
return taskExecutor;
}
}
二、 定义接口
public interface EventHandler {
default void function1(String s1, String s2) {
}
default void function2(String s1, String s2) {
}
}
三、实现接口
@Service("serviceName")
public class Sender implements EventHandler {
@Async("eventExecutor")
@Override
public void function2(String s1, String s2) {
// do something
}
}
四、统一管理入口
@Service
public class EventComposer {
@Autowired
private List<EventHandler> eventHandlers;
public void function1(String s1, String s2) {
eventHandlers.forEach(handler -> handler.function1(s1, s2));
}
public void function2(String s1, String s2) {
eventHandlers.forEach(handler -> handler.function2(s1, s2));
}
}
实际使用,直接调用EventComposer的对应函数就好