使用 int-sftp:inbound-channel-adapter 时重新读取文件
Re Read file when using int-sftp:inbound-channel-adapter
我有一个 int-sftp:inbound-channel-adapter,它使用 SftpPersistentAcceptOnceFileListFilter 作为复合过滤器的一部分。阅读文档/源代码,如果修改后的日期时间已更改,它应该接受要再次读取的文件,但我无法让它工作,它只读取一次。我使用 redis 作为存储。
知道配置有什么问题吗,我正在使用 spring 集成 4.3.5
<int-sftp:inbound-channel-adapter id="sftpInboundAdapterCensus"
channel="sftpInboundCensus"
session-factory="sftpSessionFactory"
local-directory="${sftp.localdirectory}/census-local"
filter="censusCompositeFilter"
remote-file-separator="/"
remote-directory="${sftp.directory.census}">
<int:poller cron="${sftp.cron}" max-messages-per-poll="1" error-channel="pollerErrorChannel"/>
</int-sftp:inbound-channel-adapter>
<bean id="censusCompositeFilter"
class="org.springframework.integration.file.filters.CompositeFileListFilter">
<constructor-arg>
<list>
<bean class="org.springframework.integration.sftp.filters.SftpSimplePatternFileListFilter">
<constructor-arg value="*.xml" />
</bean>
<bean id="SftpPersistentAcceptOnceFileListFilter" class="org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter">
<constructor-arg ref="metadataStore" />
<constructor-arg value="censusSampleLock_" />
</bean>
</list>
</constructor-arg>
</bean>
SftpPersistentAcceptOnceFileListFilter
只控制我们从服务器获取的内容。您还需要 local-filter
中的 FileSystemPersistentAcceptOnceFileListFilter
(它决定了哪些已被提取的文件最终作为消息发出)。默认情况下,本地过滤器是 AcceptOnceFileListFilter
。
我有一个 int-sftp:inbound-channel-adapter,它使用 SftpPersistentAcceptOnceFileListFilter 作为复合过滤器的一部分。阅读文档/源代码,如果修改后的日期时间已更改,它应该接受要再次读取的文件,但我无法让它工作,它只读取一次。我使用 redis 作为存储。
知道配置有什么问题吗,我正在使用 spring 集成 4.3.5
<int-sftp:inbound-channel-adapter id="sftpInboundAdapterCensus"
channel="sftpInboundCensus"
session-factory="sftpSessionFactory"
local-directory="${sftp.localdirectory}/census-local"
filter="censusCompositeFilter"
remote-file-separator="/"
remote-directory="${sftp.directory.census}">
<int:poller cron="${sftp.cron}" max-messages-per-poll="1" error-channel="pollerErrorChannel"/>
</int-sftp:inbound-channel-adapter>
<bean id="censusCompositeFilter"
class="org.springframework.integration.file.filters.CompositeFileListFilter">
<constructor-arg>
<list>
<bean class="org.springframework.integration.sftp.filters.SftpSimplePatternFileListFilter">
<constructor-arg value="*.xml" />
</bean>
<bean id="SftpPersistentAcceptOnceFileListFilter" class="org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter">
<constructor-arg ref="metadataStore" />
<constructor-arg value="censusSampleLock_" />
</bean>
</list>
</constructor-arg>
</bean>
SftpPersistentAcceptOnceFileListFilter
只控制我们从服务器获取的内容。您还需要 local-filter
中的 FileSystemPersistentAcceptOnceFileListFilter
(它决定了哪些已被提取的文件最终作为消息发出)。默认情况下,本地过滤器是 AcceptOnceFileListFilter
。