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

Spring批处理器还是编写器?

何嘉运
2023-03-14

在我的Spring boot和Spring batch应用程序中,我有这样一个步骤:

    @Bean
    public Step step1() {
        return stepBuilderFactory.get("step1").<FileInfo, FileInfo>chunk(10).reader(FileInfoItemReader).processor(processor()).writer(writer()).build();
    }

我的作家是一个空的,如下所示:

public class BlankWriter<T> implements ItemWriter<T> {

    @Override
    public void write(List<? extends T> items) throws Exception {
    }
}

现在,在我的处理器中,我有:

  public class FileInfoItemProcessor implements ItemProcessor<FileInfo, FileInfo> {

   .....

    @Override
    public FileInfo process(final FileInfo FileInfo) throws Exception {

     myCustomStuff () {
       ......
     }
    }
    
    public static void myCustomStuff() {
       ......
       ......
    }


  }

问题:由于所有对象都传递给处理器,我可以在处理器本身中处理它们,而不是使用任何转换等,因为我的目的通过使用处理器来解决,这是一个好的做法吗?或者我必须使用作家/自定义作家来完成工作?

共有1个答案

华瀚漠
2023-03-14

我认为在writer中进行REST POST调用比在处理器中进行更合适。REST POST调用是一种对远程位置的写入操作。

因此,您可以省略处理器(因为它是可选的),并将代码移动到项目编写器(而不是使用带有空write方法的NoOp项目编写器)。

 类似资料:
  • 有一个基于某些条件删除文件的任务。这个任务应该每天在某个时间运行。我们是否应该为这个任务使用spring boot和调度器。或者spring批处理+调度器会很好。也可以在spring批处理中使用分区并行处理此任务。 谢谢

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

  • 我必须像这样配置批处理作业流。 XML文件阅读器- 我的定制处理器是这样的 这是一个好的方法吗?我看到了一些CompositeProcess、CompositeWriter的例子,但没有一个适合我的案例。 提前谢谢。

  • 我目前正在编写一个Spring批处理,其中我正在读取一个数据块,并对其进行处理,然后我希望将此数据传递给两个Writer。一个writer将简单地更新数据库,而第二个writer将写入csv文件。 我计划编写自己的自定义编写器,并在customItemWriter中注入这两个ItemWriter,并在customItemWriter的write方法中调用这两个ItemWrite的write方法。这

  • 关于文章Spring批处理CompositeItemWriter如何管理委托编写器的事务?,对于复合项编写器事务管理,难道不应该将数据源包装在如下所示的事务管理器中吗?没有下面的bean定义,事务管理就无法与Oracle和Hikari CP一起工作。不确定帖子中提供的示例是如何工作的。请澄清

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