我是Spring批处理的新手,目前正在处理一个新的批处理作业。我的批处理作业:
目前,我正在使用CompositeItemWriter编写5个文件,它工作了。
<bean id="ComapanyWriter"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<ref bean="CompanyAWriter" />
<ref bean="CompanyBWriter" />
<ref bean="CompanyCWriter" />
<ref bean="CompanyDWriter" />
<ref bean="ResignedEmpWriter" />
</list>
</property>
</bean>
然而,我意识到,如果读取器从数据库中检索到50K条记录,每个写入器将循环所有记录,搜索各自的公司员工并写入文件,这总共是5×50K次,是多余的。所以,我担心演出。
我能想到的一些解决办法:
请指教我如何实现上述方法或如何实现批量作业目标。
ClassifierCompositeItemWriter
是一种方法。分类器
将对项目进行分类,并将其传递给指定的编写器。这样,每个writer将只接收分配给它的类的项,而不是循环块的所有项。
您可以在这里找到如何使用ClassifierCompositeItemWriter
的示例:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/support/classifierCompositeItemWriterTests.java
这里有一个类似的问题,我在这里添加它以供参考:读取平面文件并写入多个写入器,这些写入器将写入不同的对象。
希望这有帮助。
我目前正在编写spring batch,在这里我读取一个XML数据,对其进行处理,然后将处理结果作为< code>map传递 生成用于编组和解组的JAXB xjc类。JAXB生成的类如下所示。 JAXB员工类 Spring XML配置文件 处理器和写入器: 问题: XML文件对于每个固定的提交间隔都是重写的,很明显,XML文件是在每个提交级别之后创建的。但我必须附加所有
我有从多个文件读取并写入多个文件的Spring批处理配置。是否可以只写入从多个读取的一个文件。假设我收到巨大的XML文件,我将XML拆分为小文件并使用分区器并行读取小文件。但我需要将从不同的小xml文件读取的所有数据写入一个输出文件。Spring批处理是否可以做到这一点?我知道通过使写入器同步是可能的,但我正在寻找任何其他可能的方式作业配置 我得到错误组织。springframework。一批项目
我有几个不同的Spring批处理作业需要写入同一个平面文件。在平面文件中写入数据的顺序并不重要。这些批处理作业可能同时运行。 FlatFileItemWriter是否合适?我担心的是,如果多个作业同时尝试写入平面文件,数据可能会混合在一起。
CompositeItemWriter:当我需要将项目平均地分给Writer时,似乎会将所有读取的项目传递给所有的Writer。 BacktoBackPatternClassifier:我并不真正需要分类器,因为我是均匀地拆分项目。 有没有另一种方式,让一个读者和多个作者? 或者我可以在Writer中手动创建线程?
我目前正在编写一个Spring批处理,其中我正在读取一个数据块,并对其进行处理,然后我希望将此数据传递给两个Writer。一个writer将简单地更新数据库,而第二个writer将写入csv文件。 我计划编写自己的自定义编写器,并在customItemWriter中注入这两个ItemWriter,并在customItemWriter的write方法中调用这两个ItemWrite的write方法。这
在spring batch中,我有一个需求,其中我有来自数据库的客户对象列表,我需要从这个列表中创建多个文本文件。 我希望将每个客户的数据写入不同的文本文件,如 提前谢了。