我有一个由两个步骤组成的Spring批处理作业(到目前为止)。
作业的第一步是在任务中实现的。它接受需要处理的逗号分隔值(CSV)文件(使用很好的业务逻辑块来确定哪些文件),并将它们复制到“Drop Zone”目录中。
...
<!-- JOB DEFINITION -->
<job id="notificationJob" xmlns="http://www.springframework.org/schema/batch">
<step id="copyFilesToLocal">
<tasklet transaction-manager="jobRepositoryTransactionManager" ref="getFilesTasklet" />
<next on="COMPLETED" to="processFiles"/>
</step>
<step id="processFiles">
<tasklet transaction-manager="ecommerceTransactionManager">
<chunk reader="multiFileReader" writer="notificationEmailWriter" commit-interval="1" />
</tasklet>
</step>
</job>
<!-- FIRST STEP -->
<bean id="getFilesTasklet" class="com.mypackage.FileMovingTasklet">
<property name="localDao">
<bean class="com.mypackage.BatchLocalDao">
<property name="dataSource" ref="jobRepositoryDataSource" />
</bean>
</property>
<property name="sourceDirectory">
<bean id="sourceDirectory" class="org.springframework.core.io.FileSystemResource">
<constructor-arg value="/mnt/source-directory" />
</bean>
</property>
<property name="destinationDirectory">
<bean id="destinationDirectory" class="org.springframework.core.io.FileSystemResource">
<constructor-arg value="/home/myuser/drop-zone" />
</bean>
</property>
</bean>
<!-- SECOND STEP -->
<bean id="multiFileReader" class="org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="file://home/myuser/drop-zone/*.csv" />
<property name="delegate" ref="myFileReader" />
</bean>
...
您的“multifileReader”需要是scope=“step”,因此它将模式扩展(bean属性的初始化)推迟到执行该步骤。
我试图配置我的第一个多线程作业。我们有大约200,000条记录的主目录,我们需要处理。我想将文件分解为10个文件并处理它们。拆分文件tasklet工作正常 主步骤在我的配置中运行,但从步骤不运行。下面是我的配置。 分割者: MultiResourceItemReader: FlatFileItemWriter: 作业配置: 从属步骤配置: 请告知我做错了什么。我没有看到处理器urlFileItem
我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch
我第一次使用Spring batch,我需要一些关于验证步骤的帮助。 在真正开始我的批处理作业之前,我需要对要处理的文件进行一些验证,例如: 使用数据库中的信息检查名称 使用来自系统和数据库的信息检查第一行和最后一行(特定) 用第一行中的数据检查总行号 在那之后,我真的可以开始我的批处理工作了。 我认为有多个步骤相互链接,第一步进行验证,如果文件无效,则进入错误步骤。 我如何进行验证?所有找到的阅
给定一个使用分区的Spring批处理作业,是否可能有多个分区步骤? 例如: 在上述示例中,是否可以将另一个添加到(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区逐个执行?
使用Spring Batch 3.0.4.Release。 我将作业配置为使用分区步骤。从机步骤使用块大小1。任务执行器中有六个线程。我使用从六到数百的各种网格大小来运行这个测试。我的网格大小是从StepExecutions的数量,我希望==我的分区器创建的ExecutionContexts的数量。 下面是Java配置代码:
我正在寻找一些关于测试Spring批处理步骤和步骤执行的一般性意见和建议。 我的基本步骤是从api读入数据,处理实体对象,然后写入数据库。我已经测试了快乐之路,这一步成功地完成了。我现在想做的是在处理器阶段数据丢失时测试异常处理。我可以单独测试processor类,但我更愿意测试整个步骤,以确保在步骤/作业级别正确反映流程故障。 我已经阅读了spring批量测试指南,如果我是诚实的,我对它有点迷茫