我尝试使用spring的ThreadPoolTaskExecutor。我发现在org.springframework.boot.autoconfigure.task中创建了bean,但是我不能将它自动绑定到我的组件中。
public class TaskExecutionAutoConfiguration {
...
@Lazy
@Bean(
name = {"applicationTaskExecutor", "taskExecutor"}
)
@ConditionalOnMissingBean({Executor.
我需要做以下代码的单元测试,这是使用计数锁存。这只是一个测试代码。我使用mockito thenAnswer和InvocationOnMask来模拟线程/可调用。但我不知道如何在单元测试中初始化/模拟或退出计数锁。
public class ThreadPoolTaskExecRunner {
private ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
private ArrayBlockingQueue<String> values = new Arra
我通过实现Async并覆盖getAsyncExecutor来定义我的Executor来使用Spring Executor。现在我想公开一个端点,以返回异步使用的Executor的当前队列大小,线程数...etc。但我找不到一种方法来查找或自动连接异步使用的当前执行程序。我在想,我可以定义一个bean,它将由getAsyncExecutor方法和我的报告服务使用。但我想知道是否有一种更简单/更合适的方式可以与异步交互来获得当前的Executor。 我当前的配置: @Configuration
@EnableAsync
public class AsyncConfiguration implem
我得到了以下错误
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'preTransactionHandlerPool' defined in class com.fg.transbridge.processor.spring.ContextConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException
我有pr
关于同时使用Spring的@Scheduled和@Async功能,我有一些问题。
假设我的要求是每1秒处理一次数据库中的5行,那么在调度线程的1次传递中就会创建5个异步线程来处理数据库中的每一行。
我的问题如下:
1)是否有其他方法可以在scheduled方法中创建5个ascynchonis线程,而不是使用while循环?
2)在某些情况下,AsyncService (即Executing dbItem on the following asyncExecutor : task-scheduler-1 )中的日志语句将task-scheduler-1显示为线程名,而不是像我一直期望的那样显示
异步方法的Spring配置类如下:
@Configuration
@EnableAsync(proxyTargetClass = true)
@EnableScheduling
public class AsyncConfiguration {
@Autowired
private ApplicationContext applicationContext;
@Bean
public ActivityMessageListener activityMessageListener() {
return new ActivityMessageListener();
}
@Bean
pu
我正在尝试使用Spring的“ThreadPoolTaskExecutor”实现多线程的持续任务执行。
这里是我要使用的类:
@Component
public class AsyncWorker implements Worker {
public int threadCount = 5;
private ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
@Async
public void doWork(Runnable runnable){
executor.
我根据我的应用程序上下文将ThreadPoolTaskExecutor声明为@Bean,如下所示:
@Configuration
@ConfigurationProperties(prefix = "application")
@EnableCaching
public class ApplicationConfig {
private static final int POOL_SIZE = 2;
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskEx
当我试图使用执行器运行SpringBoot2.6.6项目测试用例时,我得到以下错误消息:
Parameter 0 of method bindTaskExecutorsToRegistry in org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration required a bean of type 'java.util.Map' that could not be found.
同样,此问题仅在试图运行@SpringBootTest集成测试时
我在Spring项目中从ThreadPoolExecutor切换到了ThreadPoolTaskExecutor,仅仅因为根据它的文档:
This class is well suited for management and monitoring (e.g. through JMX)
我在我的配置类中创建了一个ThreadPoolTaskExecutor bean,如下所示:
@Bean
ThreadPoolTaskExecutor profileTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new Thread
我已经在我的批处理应用程序中配置了两个数据源。一种是从database1读取记录,另一种是将记录写入database2。
我用弹簧批次进行记录的批量处理。但是,插入3块记录后,当没有重复键时,“重复键值违反唯一约束”。我阅读了多个帖子,其中建议刷新实体管理器以删除缓存的对象。我仍然很困惑如何用我当前的应用程序来实现这一点,以及spring批处理在每个块处理之后是否不会刷新?
@Slf4j
@Configuration
@RequiredArgsConstructor
public class BatchJob{
private final JobBuilderFactory jobB
我有一个spring引导应用程序,用户命中端点,我必须承认我立即收到了他们的请求。我需要在不同的线程上做一些计算,并在计算结束后将它们发送到不同的端点上。为了在不同线程上执行任务,我的线程池配置如下所示:
@Configuration
@EnableAsync
public class SpringAsyncMatchingConfig {
@Bean(name = "threadTaskExecutor")
public TaskExecutor getMatchingTaskExecutor() {
ThreadPoolTaskExe
我已经使用fixedDelayString=300000定义了3个作业(5分钟),并且我做到了这3个作业将独立执行。出于这个原因,我创建了一个异步实现。起初,每项工作都工作得很好,但随着时间的推移,他们开始拖延很长时间。每次执行大约5seg,但下一次执行在10分钟后开始运行。偶尔需要15或18分钟。 一个例子可以是: @EnableScheduling
public class AppConfig {
@Async('threadPoolTaskExecutor')
@Scheduled(fixedDelayString=15000)
public void do
我正在尝试使用Spring batch和spring集成上传SFTP服务器中的多个文件。为此,我使用ThreadPoolTaskExecutor进行并行处理。
在每个进程中执行文件上传,但即使所有文件都在SFTP服务器上成功上传,也不会停止进程,程序始终保持运行状态。
即使我重写JobExecutionListener
@Bean
public JobExecutionListener jobExecutionListener(ThreadPoolTaskExecutor executor) {
return new JobExecutionListener() {
p
当我在多个线程中运行我的步骤时,我在我的行映射器中得到一个空指针异常,同时处理结果集,即使是对于具有显式空检查的条目。当我在没有taskExecutor()/on单线程的情况下执行它时,它工作得很好。我对几件事感到困惑。我的理解是,如果我将提交间隔指定为100,而核心线程计数为10,那么每个线程都会提取一个100的块,并独立地处理它。
分块的读者行地图三人组是如何工作的?如果我的读取器中有一个查询,获取100万行和1000块大小,这是否意味着读取器将访问数据库1000次?每一次,行映射器将映射获取的所有1000行?,线程处理如何影响行映射程序?
守则如下:
@Bean
public
我正在尝试将Spring上下文复制到特殊情况下的可运行/可调用任务中。我想让其他线程像以前一样运行。 我读过这个How to enable request scope in async task executor 并实现了一个定制的ThreadPoolTaskExecutor +装饰器。 @Configuration
public class ContextCopyConfig {
private Integer connectionsLimit=10;
@Bean(name = "contextExecutor")
public Executor
我正在使用TaskExecutor在后台线程中运行一些任务。以下是我的配置:-
@Configuration
public class TaskExecutorConfig
{
@Bean
public TaskExecutor threadPoolTaskExecutor()
{
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(4);
threadPoolTaskExecutor.
我认为当我为这个方法添加@Async符号时,它会返回一个空的结果。方法是从网站获取数据并返回数据。当我删除@Async时,它会起作用。当我不使用@Async时,它使用的是一个名为"http-nio-8080-exec-1“的线程,当我使用@Async时,它使用的是一个带有我的命名前缀" my -thread1”的线程。我不知道是否需要在其他地方进行配置,比如xml或其他什么。谢谢!
@Async
public CompletableFuture<List<Post>> searchByTag(String[] tags, String s