我遇到了一个问题,当我使用Spring-Integration-sftp从SFTP服务器拉取文件并进行一些处理时.我用RedisMetadataStore
为我的SftpPersistentAcceptOnceFileListFilter
提供动力.我在我的用例中使用了Streaming Inbound Channel Adapter
.
问题是,一旦将新的文件事件传递给我的处理程序,该文件就会在Redis元数据存储中标记为已处理,所以现在如果我的下游处理失败,该文件将永远丢失.我已经进行了重试,但我想要做的是将该文件标记为未处理的Redis,并在下一个投票周期中再次拾取它.
我发现RedisMetadataStore类上有一个remove方法,如果在处理过程中出现任何异常,它可以删除键,但想知道直接调用Remove方法是否明智?因为据我所知,这些方法应该由筛选器调用,而不是直接调用,但我找不到任何东西来处理这种情况.
如果文件在处理过程中失败,是否有任何构造可以从SftpPersistentAcceptOnceFileListFilter
中删除该文件?