2

我将从客户的 SFTP 服务器接收一个或多个文件,这些文件存储在我们的本地目录中。该文件的名称将类似于 DDMMYYYYHHMMSSIIXCFILE.XSMP#1234567890。因此,在示例中,除了字符串“XCFILE.XSMP”之外,文件具有不同的前缀和后缀,这使得文件非常独特。之前我们将文件重命名为 XCFILE.XSMP 并通过 Spring Batch 进行处理,如下所示。(我的配置与这里的帖子非常相似)

 <property name="resource" value="file:${XCFILE.XSMP}" />

我现在还有几个用例:

  1. 现在我们将收到多个文件,这些文件将被放到同一个本地目录中
  2. 该目录还将包含一些根本不应该处理的其他文件(例如:我只需要处理其中包含“XCFILE.XSMP”的文件)
  3. 我的 Spring Batch 程序应该一一读取所有具有 XCFILE.XSMP 的未处理文件并更新到我们的数据库中。

我的问题是:

  1. 我如何将多个文件作为参数传递给 Spring Batch。我从春天开始阅读这份文件
  2. 如何指定只应考虑 XCFILE.XSMP
  3. 如何确保只处理未处理的文件

如果我的任何案件或疑问不清楚,请给我一个机会。谢谢。

4

1 回答 1

0

您的问题有几个方面:

如何通过 Spring Batch 读取多个文件。
可以采用MultiResourceItemReaderSpEL 表达式来定义您要阅读的文件。您可以将资源属性配置为在您的情况下看起来像这样:

<bean id="inputTestReader" class="org.springframework.batch.item.file.MultiResourceItemReader">
    <property name="resources" value="file:some/path/*XCFILE.XSMP*" />
    <property name="delegate" ref="testItemReader" />
</bean>

上面的示例还应该解决仅读取 XCFILE.XSMP 文件的问题。

如何确保只处理未处理
的文件 典型的处理方式是移动或重命名已处理的文件,使它们与正在读取的文件的表达式不匹配。这可以通过在文件完成时移动文件的侦听器来完成。

于 2014-09-19T22:00:33.933 回答