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

元素可能不会出现在带有abstract=“true”spring批处理的中

鲁展
2023-03-14

我有不同的工作需要从parenet工作中共享拆分(并行运行的多个步骤)。下面是配置

<job id="parentJob" abstract="true">

    <split id="split1" task-executor="asyncTaskExecutor">
        <flow>
            <step id="step0_1">
                <tasklet transaction-manager="transactionManager">
                    <chunk reader="step0_1ItemReader" writer="step0_1ItemWriter"
                        commit-interval="1000" />
                </tasklet>
            </step>
        </flow>
        <flow>
            <step id="step0_2">
                <tasklet transaction-manager="transactionManager">
                    <chunk reader="step0_2ItemReader" writer="step0_2ItemWriter"
                        commit-interval="1000" />
                </tasklet>
            </step>
        </flow>
        <flow>
            <step id="step0_3">
                <tasklet transaction-manager="transactionManager">
                    <chunk reader="step0_2ItemReader" writer="step0_2ItemWriter"
                        commit-interval="1000" />
                </tasklet>
            </step>
        </flow>

    </split>

</job>


<job id="job1" parent="parentJob">
    <step id="step1_1" next="split1">
        <tasklet ref="step1_1Tasklet" />
    </step>
</job>




<job id="job2" parent="parentJob">
    <step id="step2_1" next="split1">
        <tasklet ref="step2_1Tasklet" />
    </step>
</job>

我犯了这个错误

该元素可能不会出现在with抽象="true"Spring批次上

如何在不同的作业之间共享来自父级的公共拆分,或者如何使用独立的拆分元素(如step element)?

共有1个答案

荀增
2023-03-14

A

处理这种常见流的最佳方法是将流外部化,并从工作中引用它。例如(本例有一个包含步骤的流程,但也可以包含拆分):

<job id="job">
    <flow id="job1.flow1" parent="flow1" next="step3"/>
    <step id="step3" parent="s3"/>
</job>

<flow id="flow1">
    <split id="split1">
        <flow>
            <step id="step1" parent="s1" next="step2"/>
            <step id="step2" parent="s2"/>
        </flow>
        <flow>
            <step id="step3" parent="s3"/>
        </flow>
    </split>
</flow>

您可以在以下文档中阅读更多关于外部化流的信息:http://docs.spring.io/spring-batch/reference/html-single/index.html#external-流动

 类似资料:
  • 我在没有ItemWriter的情况下定义了我的tasklet,如下所示: 我得到了这个错误: 配置问题:

  • 我正在编写Spring批的Spring Boot应用程序,其中ItemReader从Oracle数据库读取数据并将数据写入postgres sql,但我得到了以下错误 我不想创建spring批处理元数据表,我的应用程序不需要监视作业,请就此向我提出建议。提前谢谢!!

  • 根据Spring batch文档,是作为Spring batch 3.0的一部分引入的。但是,看起来JobScope注释在Spring Batch3.0JAR中不可用。我在中指定了依赖项,如下所示: 当我将更改为时,注释会按预期找到。我的理解是是作为spring Batch3.0的一部分引入的,因此应该可以在从3.0.0开始的任何spring batch jar中使用。 为什么注释在3.0.0版中

  • 我有一个带有两个数据库的Spring Batch应用程序:一个SQLDB用于Spring Batch元数据,另一个是存储所有业务数据的MongoDB。关系DB仍然使用。但是我不认为Mongo写入是在带有回滚的活动事务中完成的。以下是上官方Spring Batch留档的摘录: ItemWriter实现,使用Spring数据的MongoOperations实现写入MongoDB存储。由于MongoDB

  • 我正在使用spring批处理使用RepositoryItemReader从postgresql DB读取记录,然后将其写入主题。我看到大约有100万条记录需要处理,但它并没有处理所有的记录。我已经将reader的pageSize设置为10,000并且与提交间隔(块大小)相同

  • 批处理配置具有spring作业,只有一个步骤 1)读取器-从csv文件读取。处理器对文件应用一些规则。Drools请运行schema-postgresql.sql来设置数据库 WRITER使用SPRING DATA JPA写入DB Writer将此称为PersonDaoImpl: