gpt4 book ai didi

java - Spring Batch 中多个输入文件的分区器多线程

转载 作者:行者123 更新时间:2023-11-30 03:59:19 26 4
gpt4 key购买 nike


我有一个包含超过 100 万个 xml 文件的文件夹和一个单线程步骤,以相同的方式处理这些 xml 文件中的每一个(没有与数据库的连接或文件之间的任何共同点)。< br/>有没有办法使此步骤更加并发,例如使用一系列文件名进行分区或将文件拆分到不同的文件夹中并使用文件夹的名称?

据我了解MultiResourcePartitioner无法处理这种情况,因为它

Creates an ExecutionContext per resource, and labels them as {partition0, partition1, ..., partitionN}. The grid size is ignored.

最佳答案

既然你已经有了单独的文件,为什么你需要分组来增加并发性。如果需要增加并发性,请增加线程数。在线程执行器中。假设您有 1000 个文件,并且有内存和 CPU,您可以将最大线程设置为 50。因此一次将处理 50 个文件。文件处理完毕后,将处理下一组 50 个文件。因此执行是并发运行的。这是一个例子。

<bean id="kpThreadPool"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"
destroy-method="destroy">
<property name="maxPoolSize" value="${app.max_thread_num}" />
</bean>

<batch:step id="kp.step1" next="kp.step2">
<batch:partition step="kp.slave"
partitioner="multiResourcePartitioner">
<batch:handler task-executor="kpThreadPool" />
</batch:partition>
</batch:step>

其中app.max_thread_num=50

关于java - Spring Batch 中多个输入文件的分区器多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22332082/

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