Ste*_*ins 4 java spring batch-processing spring-batch
我有一个Spring Batch作业,包含两个步骤(到目前为止).
在第一步的工作是在微进程中实现.它需要处理需要处理的逗号分隔值(CSV)文件(使用大量业务逻辑来确定它们是哪些),并将它们复制到"drop zone"目录中.
所述第二步骤被配置为面向块处理,与读取器和写入.读者是MultiResourceItemReader...查找放置区目录中的所有CSV文件,并将每个文件委托给"真实"读取器(解析CSV).
我的问题是,即使第一步成功,第二步也无法在放置区目录中找到任何CSV文件.有趣的是,如果我立即再次运行批处理作业...那么第二步确实找到并处理文件!
我在推测,但看起来Spring Batch在开始时解决了第二步的通配符模式......而不是等到第二步运行的时候.即使第一步复制了它应该的文件,第二步已经确定那里没有文件.
我是Spring Batch的新手,还在学习我的方法.我在这里缺少哪些具有背景或范围的明显事物?我的工作定义的相关部分如下.谢谢!
...
<!-- 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>
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |