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

Spring批处理-读取一次,写入两次

微生季
2023-03-14

我是Spring Batch的新手。我的要求是我有一个阅读器,它通过Web服务调用/数据库调用获取记录,目前我正在将这些记录写入一个表。现在我需要处理相同的记录(阅读器读取的记录)并写入另一个表。这里要注意的一点是,第二次写入中存储的第二个项目是不同类型的第一次写入。

我需要像下面这样

1st Step: - Read items of type A --> Write items of Type A 
2nd Step:-  Read items of type A --> Process to type B ---> Write 10 items of type B

对于上述相同的工作,我需要事务管理。此外,在步骤2中:-如果可能,我应该使用步骤1中已经读取的数据。

共有1个答案

贾骏喆
2023-03-14

Spring批处理定义了独立的处理步骤。每个步骤负责其输入、处理和输出。因此,我会将工作结构如下:

<job id="myJob">
    <step id="step1" next="step2">
        <tasklet>
            <chunk reader="reader" writer="typeAwriter"/>
        </tasklet>
    </step>
    <step id="step2">
        <tasklet>
            <chunk reader="reader" processor="processor" writer="typeBwriter"/>
        </tasklet>
    </step>
</job>

使用上述配置,读取器将是一个以A类型读取的步长范围读取器。打字机写入A类型。处理器是将A类型转换为B类型的处理器。打字机写入B类型。由于处理器返回B类型的列表,打字机需要是一个自定义实现,循环遍历处理器返回的列表(打字机将采用List

 类似资料:
  • 我有“N”没有的。客户/客户。对于每个客户/客户,我需要从数据库(读取器)中获取记录,然后我必须处理(处理器)客户/客户的所有记录,然后我必须将记录写入文件(写入器)。 如何将spring批处理作业循环N次?

  • CompositeItemWriter:当我需要将项目平均地分给Writer时,似乎会将所有读取的项目传递给所有的Writer。 BacktoBackPatternClassifier:我并不真正需要分类器,因为我是均匀地拆分项目。 有没有另一种方式,让一个读者和多个作者? 或者我可以在Writer中手动创建线程?

  • 我有一个批处理步骤 读取器和处理器流程如何工作?读取器是读取块并等待处理器处理它,还是一次读取所有块。

  • 我的Spring批处理过程运行了两次。 在这里阅读这个链接后,我添加了到我的application.yml.但是作业本身没有运行。 然后我尝试对我的作业配置类进行一些修改。我将实例变量移动到方法参数,希望能解决这个问题。但是再也没有运气了。 配置类 AppConfig.java更新 日志: 从日志中,您可以注意到 ***********处理器**********打印两次。(处理器每次打印两次,因为

  • 关于skip,我有一个非常基本的问题。我正在使用spring示例提供的spring batch simple cli项目,并试图理解跳过行为。它有一个非常基本的示例读取器,可以读取字符串数组(我将其修改为从Hellowworld 1到Hellowworld 10的10个字符串列表中读取),还有一个基本的编写器,可以登录到控制台。writer抛出java。每写一次都有例外。我在作业配置中增加了4个跳

  • 根据已接受的答案代码,对该代码的以下调整对我起作用: 我已经将这个问题更新到了一个可以正确循环的版本,但是由于应用程序将扩展,能够处理并行是很重要的,我仍然不知道如何在运行时用javaconfig动态地做到这一点... 基于查询列表(HQL查询),我希望每个查询都有一个读取器-处理器-写入器。我当前的配置如下所示: 工单 处理机 作家 目前,该过程对于单个查询来说工作得很好。然而,我实际上有一个查