运行FileReadingMessageSource
方法后,receive()
中是否有选项/方式删除文件?
感谢。
答案 0 :(得分:1)
在使用 setDeleteSourceFiles(true) 的消息处理程序的方法中,请参阅以下内容:
@Bean
@InboundChannelAdapter(value = FILE_CHANNEL_SOURCE, poller =
@Poller(fixedDelay = INTERVAL))
public MessageSource<File> sourceFiles() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setAutoCreateDirectory(true);
source.setDirectory(new File(sourceDir));
source.setFilter(new SimplePatternFileListFilter(FILE_PATTERN));
return source;
}
@Bean
@ServiceActivator(inputChannel = FILE_CHANNEL_SOURCE)
public MessageHandler processedFiles() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(outputDir));
handler.setFileExistsMode(FileExistsMode.FAIL);
handler.setDeleteSourceFiles(true);
handler.setExpectReply(false);
return handler;
}
答案 1 :(得分:0)
你可以用这个(xml样本)来做到这一点:
<int:poller fixed-rate="500">
<int:transactional synchronization-factory="syncFactory"/>
</int:poller>
<int:transaction-synchronization-factory id="syncFactory">
<int:after-commit expression="payload.delete()"/>
</int:transaction-synchronization-factory>
其中<poller>
适用于<int-file:inbound-channel-adapter>
作为transactionManager
,您可以使用PseudoTransactionManager
:http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/transactions.html