gpt4 book ai didi

java - 多个 ThreadPoolTask​​Executers Spring Java Config

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:35 25 4
gpt4 key购买 nike

我的应用程序中需要多个任务执行器,但我没有看到如何使用 Java Config 来实现。 XML 版本很简单,但我一定遗漏了一些 Java 配置

我需要两个具有不同队列和线程池大小的不同执行器,这如何使用 Java Config 完成?

这是我的 AsyncConfig 类

import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.Executor;

@EnableScheduling
@EnableAsync
@Configuration
public class AsyncConfig implements AsyncConfigurer {

@Autowired
Environment environment;

@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(environment.getRequiredProperty("aysnc.executor.poolSize", Integer.class));
executor.setMaxPoolSize(environment.getRequiredProperty("aysnc.executor.maxPoolSize", Integer.class));
executor.setQueueCapacity(environment.getRequiredProperty("aysnc.executor.queueCapacity", Integer.class));
executor.initialize();
return executor;
}

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new SimpleAsyncUncaughtExceptionHandler();
}
}

最佳答案

我认为您可以删除接口(interface),在标记为 @Bean(name = "nameOfExecutor") 的 JavaConfig 中定义 2 个执行器,然后在 @Async("nameOfExecutor") 根据文档:可用于确定执行此方法时要使用的目标执行器,匹配特定执行器或任务执行器 bean 定义的限定符值(或 bean 名称)。

关于java - 多个 ThreadPoolTask​​Executers Spring Java Config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32207023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com