当前位置: 首页 > 知识库问答 >
问题:

多步并行的Spring批量分区?

索和璧
2023-03-14

 <batch:job id="myJob" restartable="true" job-repository="jobRepository" >
        <batch:listeners>
            <batch:listener ref="myJoblistener"></batch:listener>
        </batch:listeners>

        <batch:step id="my-master-step">
            <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler">
            </batch:partition>
        </batch:step>
    </batch:job>

    <batch:step id="my-step" >
        <batch:tasklet ref="myTasklet" transaction-manager="transactionManager" >
        </batch:tasklet>
        <batch:listeners>
            <batch:listener ref="myStepListener"></batch:listener>
        </batch:listeners> 
    </batch:step>

我不确定使用spring Batch是否可行。任何想法或我都无法实现它。谢谢。

共有1个答案

文鸣
2023-03-14

您可以尝试以下方法。

 <batch:job id="myJob" restartable="true" job-repository="jobRepository" >
        <batch:listeners>
            <batch:listener ref="myJoblistener"></batch:listener>
        </batch:listeners>

        <batch:step id="my-master-step">
            <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler">
            </batch:partition>
        </batch:step>
    </batch:job>

    <batch:step id="my-step" >
        <batch:job ref="MyChildJob" job-launcher="jobLauncher"
                job-parameters-extractor="jobParametersExtractor" />
        <batch:listeners>
            <batch:listener ref="myStepListener"></batch:listener>
        </batch:listeners> 
    </batch:step>

    <batch:job id="MyChildJob" restartable="false"
        xmlns="http://www.springframework.org/schema/batch">
        <batch:step id="MyChildStep1" next="MyChildStep2">
            <batch:tasklet ref="MyChildStep1Tasklet" transaction-manager="transactionManager" >
            </batch:tasklet>
        </batch:step>

        <batch:step id="MyChildStep2" next="MyChildStep3">
            <batch:tasklet ref="MyChildStep2Tasklet" transaction-manager="transactionManager" >
            </batch:tasklet>
        </batch:step>

        <batch:step id="MyChildStep3">
            <batch:tasklet ref="MyChildStep3Tasklet" transaction-manager="transactionManager" >
            </batch:tasklet>
        </batch:step>

    </batch:job>
 类似资料:
  • 我试图配置我的第一个多线程作业。我们有大约200,000条记录的主目录,我们需要处理。我想将文件分解为10个文件并处理它们。拆分文件tasklet工作正常 主步骤在我的配置中运行,但从步骤不运行。下面是我的配置。 分割者: MultiResourceItemReader: FlatFileItemWriter: 作业配置: 从属步骤配置: 请告知我做错了什么。我没有看到处理器urlFileItem

  • 给定一个使用分区的Spring批处理作业,是否可能有多个分区步骤? 例如: 在上述示例中,是否可以将另一个添加到(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区逐个执行?

  • 当我查看Spring Batch留档以并行执行步骤时,我只看到它通过XML的配置,如下所示。 我正在使用Spring批处理编写一个应用程序,我也使用了Spring Boot,我的所有配置都是使用注释完成的。是否有一个我可以使用Java配置来配置拆分步骤的方法?我查看了Spring Batch中Step interface的API文档,但它没有Split Step的默认实现。有没有办法使用现有的默认

  • Spring批处理-需要帮助以并行和多个节点运行批处理作业的独立步骤。一个spring批处理作业(JobA),包含三个步骤[步骤A(在compute1中)和步骤B(在compute2中)以及步骤C] StepA和StepB是独立的步骤,占用大量内存,因此不能在同一计算节点/JVM上并行运行。要使StepC同时启动(StepA和StepB),需要成功完成。我不想为了节省时间而依次执行步骤A和步骤B。

  • 我在三台机器上运行Spring批处理作业。例如,数据库有30条记录,每台机器中的批处理作业必须拾取唯一的10条记录并对其进行处理。 我读过分区和并行处理,有点困惑,哪一个合适? 感谢您的帮助。

  • 那么,如何将作业配置为先运行单个步骤,然后并行运行多个步骤,然后运行最后一个步骤呢?