package cn.iocoder.yudao.framework.quartz.config;
|
|
import com.alibaba.ttl.TtlRunnable;
|
import org.springframework.beans.BeansException;
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.core.task.SimpleAsyncTaskExecutor;
|
|
/**
|
* 异步任务 Configuration
|
*/
|
@AutoConfiguration
|
@EnableAsync
|
public class YudaoAsyncAutoConfiguration {
|
|
@Bean
|
public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() {
|
return new BeanPostProcessor() {
|
|
@Override
|
@SuppressWarnings("PatternVariableCanBeUsed")
|
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
// 处理 ThreadPoolTaskExecutor
|
if (bean instanceof ThreadPoolTaskExecutor) {
|
ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) bean;
|
executor.setTaskDecorator(TtlRunnable::get);
|
return executor;
|
}
|
// 处理 SimpleAsyncTaskExecutor
|
// 参考 https://t.zsxq.com/CBoks 增加
|
if (bean instanceof SimpleAsyncTaskExecutor) {
|
SimpleAsyncTaskExecutor executor = (SimpleAsyncTaskExecutor) bean;
|
executor.setTaskDecorator(TtlRunnable::get);
|
return executor;
|
}
|
return bean;
|
}
|
|
};
|
}
|
|
}
|