【发布时间】:2016-12-07 05:56:55
【问题描述】:
我正在使用 Spring Batch 2. 版本。我已经生成了 csv 文件并且能够在本地以 csv 格式保存。
现在我想生成相同的文件,但它将存储在 SFTP 服务器上。
我已经阅读了一些在 sftp 服务器上生成文件的教程,但他们使用的是 Spring 与 Spring Batch 的集成。
是否可以仅使用 Spring Batch 在 SFTP 服务器上生成文件?
下面是定义的 itemReader bean::
<bean id="itemReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="select u.ID, u.USER_LOGIN, u.PASSWORD, u.AGE from USERS u" />
</property>
<property name="rowMapper">
<bean class="com.example.UserRowMapper" />
</property>
</bean>
ItemWriter Bean::
<bean id="flatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="file:csv/user.csv" />
<property name="appendAllowed" value="true" />
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<property name="delimiter" value="," />
<property name="fieldExtractor">
<bean
class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value="name,age,id,password"/>
</bean>
</property>
</bean>
【问题讨论】:
-
我建议将文件存储在本地,然后使用 ch.ethz.ssh2SFTPv3Client 之类的库将文件复制到 FTP 服务器。
-
感谢您的建议。但我不想编写新代码或 tasklet。我正在寻找在 SFTP 服务器上写入文件的 Spring Batch 的内置功能。
-
没有这样的事情。我也怀疑这样做是否明智,因为不稳定问题以及延迟以及性能问题(您不希望您的工作在等待 ftp 服务器准备好接收数据时暂停)。此外,通常你有一个作业控制系统负责将文件从一个地方复制到另一个地方,让 springbatch 作业只负责生成文件并将其存储在本地。当然,这取决于具体情况。但总的来说,我认为最好不要让写入器直接写入 FTP 服务器。
标签: spring ftp spring-integration spring-batch sftp