Java Spring批处理多线程默认限制为10?
我正在使用Java Spring批处理多线程默认限制为10?,java,multithreading,spring-batch,Java,Multithreading,Spring Batch,我正在使用TaskExecutionPartitionHandler将我的作业划分为多个PartitionStep(由gridSize控制),还使用SimpleAsyncTaskExecutor在每个步骤中异步处理(由ConcurrencyLit控制) 到目前为止,如果concurrencyLit足够大(比如说50),我观察到整个批处理作业的最大并发处理限制在min(10,gridSize*4) 通过进一步测试,我确定公式中的4可以通过simplestbuilder的throttleLimit(
TaskExecutionPartitionHandler
将我的作业划分为多个PartitionStep
(由gridSize
控制),还使用SimpleAsyncTaskExecutor
在每个步骤中异步处理(由ConcurrencyLit
控制)
到目前为止,如果concurrencyLit
足够大(比如说50),我观察到整个批处理作业的最大并发处理限制在min(10,gridSize*4)
通过进一步测试,我确定公式中的4
可以通过simplestbuilder
的throttleLimit()
方法进行修改
但是,即使我将gridSize
和throttleLimit
配置为更大的值,总体并发性也不会超过10
有人知道我可以在哪里配置该限制吗?
p、 我是以编程方式配置作业,而不是使用XML。您的
AppConfig
是否实现了AsyncConfigurer
?@Palcente感谢您指出了这个方向,我已经深入了解了AppConfig
和AsyncConfigurer
的内容。它说“默认情况下,Spring将搜索关联的线程池定义:上下文中唯一的TaskExecutor bean,或者名为“TaskExecutor”的执行器bean。”我确实有一个bean返回SimpleAsyncTaskExecutor
``@Bean@Qualifier(“slaveTaskExecutor”)public TaskExecutor TaskExecutor(){}``因为我使用的是spring批处理,所以我有一个扩展DefaultBatchConfigurer
的配置器。我是否需要一个AppConfig
+AsyncConfigurer
?并为整个批处理作业指定另一个任务执行器?如果DefaultBatchConfigurer
的类型为AppConfig
,则只需添加AsyncConfigurer
类型即可。实际上,我检查了上述内容,并注意到可以在启动器级别设置执行器。。检查文档中的simplejoblancher
您的AppConfig
是否实现了AsyncConfigurer
?@Palcente感谢您指出了这个方向,我已经进一步了解了AppConfig
和AsyncConfigurer
。它说“默认情况下,Spring将搜索关联的线程池定义:上下文中唯一的TaskExecutor bean,或者名为“TaskExecutor”的执行器bean。”我确实有一个bean返回SimpleAsyncTaskExecutor
``@Bean@Qualifier(“slaveTaskExecutor”)public TaskExecutor TaskExecutor(){}``因为我使用的是spring批处理,所以我有一个扩展DefaultBatchConfigurer
的配置器。我是否需要一个AppConfig
+AsyncConfigurer
?并为整个批处理作业指定另一个任务执行器?如果DefaultBatchConfigurer
的类型为AppConfig
,则只需添加AsyncConfigurer
类型即可。实际上,我检查了上述内容,并注意到可以在启动器级别设置执行器。。检查文档中的simplejoblancher