我使用TaskExecutorPartitionHandler将我的工作划分为多个PartitionStep (由gridSize控制),也使用SimpleAsyncTaskExecutor在每个步骤中异步处理(由concurrencyLimit控制)。
到目前为止,如果concurrencyLimit足够大(假设50),我观察到整个批处理作业的最大并发处理仅限于min(10, gridSize * 4)。
通过进一步的测试,我确定了公式中的4可以用SimpleStepBuilder的throttleLimit()方法进行修改。
但是,即使我将gridSize和throttleLimit配置为更大的值,总的并发性也不会超过10。,有人知道我可以在哪里配置这个限制吗?
附注:我是以编程方式配置作业,而不是使用XML。
发布于 2021-07-07 12:22:50
为时已晚,但请尝试检查是否使用默认的10同时DB连接限制的HikariCP。
只是面临着类似的问题,通过增加spring.datasource.hikari.maximum-pool-size来解决
请参阅:Number of parallel threads processing is capped to 10 with Spring Batch
https://stackoverflow.com/questions/40936889
复制相似问题