Spring Integration - FileSystemPersistentAcceptOnceFileListFilter过滤具有相同名称但不同时间戳的文件

时间:2017-03-08 22:22:40

标签: spring-integration

我有一个Spring集成应用程序,它在文件存在于本地目录中时对文件进行一些处理。处理完文件后,它会将文件移动到已处理的目录。

一段时间后,新文件出现在同一本地目录中,文件名相同但内容和时间戳不同。应用程序应该再次处理该文件,然后将其移动到已处理的目录...但永远不会生成消息。这是配置:

@Component({
  selector: 'my-app',
  template: `
    <div class="container-fluid">
      <template ngbModalContainer></template>
      <ngbd-modal-component>
          <ngbd-modal-content [name]="modal Title" (notifyParent)="getNotification($event)"></ngbd-modal-content>
      </ngbd-modal-component>
  </div>
  `
})
export class App {
      getNotification(event) {
        console.log('Message received...');
    }
} 

我不希望应用程序处理具有相同名称和相同修改时间戳的文件。如何确保应用程序仍然处理具有相同名称但不同时间戳的文件?

1 个答案:

答案 0 :(得分:3)

使用ChainFileListFilter代替CompositeFileListFilter

后者为每个过滤器显示所有文件,因此,如果LastModifiedFileListFilter在第一次尝试时过滤文件(并且FileSystemPersistentAcceptOnceFileListFilter通过它),则复合过滤器会过滤文件;在下一次尝试时,即使它通过了第一个过滤器,它也会被再次过滤。

ChainFileListFilter无法将LastModifiedFileListFilter过滤的文件传递给下一个过滤器。

这是最近的一次修复&#34; (在4.3.7 JIRA here)。

目前的版本是4.3.8。