我的情况是,我得到一个批处理作业将读取数据从两个不同的表和不同的处理。
第一个读取器将进行简单的SQL检索和简单的转换,第二个读取器将进行SQL检索并处理后面的更新和插入逻辑。两个读取器都将返回一个字符串行并写入一个文件。
在spring批处理中,是否可能在一个步骤中有2个读取器和2个处理器,然后传递给1个写入器?
我倾向于法伊兹·平克曼建议的第二种方法。它更接近于spring批处理的工作方式。
第一步
第二步
我并不完全理解您所说的“处理更新并在后面插入逻辑”的意思。我假设您从一个数据库读取数据,并且基于这些数据,您必须在一个表中执行插入和更新。
这样,您就有了清晰的事务边界,并且可以确保文件的内容以及插入和更新是“同步的”。
注意:第一步和第二步可以并行运行
第三步--读取器使用多资源读取器从两个文件中读取--写入器使用FlatFileItemWriter将两个内容写入一个文件。
当然,如果您不需要在一个文件中拥有内容,那么您可以跳过步骤3。
您还可以依次执行步骤1和步骤2,并写入同一个文件。但取决于步骤1和2的执行时间,性能可能不如并行执行步骤1和2并使用第三步来编译数据。
我有一个批处理步骤 读取器和处理器流程如何工作?读取器是读取块并等待处理器处理它,还是一次读取所有块。
我刚开始使用Spring批处理,我有一个特殊问题。我希望使用从3个不同的jpa查询中获取结果,并分别处理它们,然后使用将它们写入一个统一的XML文件。 对于eg,生成的XML看起来像是,
CompositeItemWriter:当我需要将项目平均地分给Writer时,似乎会将所有读取的项目传递给所有的Writer。 BacktoBackPatternClassifier:我并不真正需要分类器,因为我是均匀地拆分项目。 有没有另一种方式,让一个读者和多个作者? 或者我可以在Writer中手动创建线程?
我有“N”没有的。客户/客户。对于每个客户/客户,我需要从数据库(读取器)中获取记录,然后我必须处理(处理器)客户/客户的所有记录,然后我必须将记录写入文件(写入器)。 如何将spring批处理作业循环N次?
项目读取器将数据从特定源代码读入Spring批处理应用程序,而项目写入器将数据从Spring Batch应用程序写入特定目标。 Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取条记录,则处理器中的代码将在每条记录上执行。 块(chunk)是该tasklet的子元素。 它用于执行读取,写入和处理操作。 可以在如下所示的步骤中配置使用此元素的读取器,写入
我必须使用Spring Batch配置一个作业。是否可以有一个单线程的项目阅读器,但多线程处理器? 在这种情况下,ItemReader将通过从数据库中读取工作项(通过执行预定义的查询)来创建要处理的工作项,每个处理器将并行处理项/块。