2015-10-05 86 views
1

我正在做一个简单的弹簧集成项目,选择一些文件(使用文件:入站通道适配器),并基于这些文件将一些数据导入到数据库中。spring-integration:如何删除文件?

最后,它希望将这些文件删除,因为我不再需要它们,到目前为止我还没有想出如何在没有编码的情况下做到这一点。

文件:出站通道适配器是不行的,因为它移动文件而不是删除它们。

我试图用

<int:outbound-channel-adapter expression="headers['file_originalFile'].delete()" ... 

解决这个问题,但我越来越

未能类型 'java.lang.String中' 的值转换为所需的类型 的Java。 lang.Void“;

你有什么想法如何解决它没有编码?

+0

错误似乎预计,因为春期望字符串表达式和delete()返回void。你有没有看过这个http://docs.spring.io/spring-integration/reference/html/files.html(14.3.4文件出站通道适配器) – Azhar

回答

0

File.delete()返回一个布尔值,通过契约,出站通道适配器务必返回void(无输出)。

您可以使用<service-activator/>output-channel="nullChannel"来放弃结果。

或者,您可以使用表达式来评估最终消费者的建议,如retry-and-more sample中所示。

+0

谢谢,那就是我一直在寻找的东西。最后,我将表达式修改为'headers ['file_originalFile']。delete()?null:null'。我不得不说,我很惊讶,删除功能在弹簧集成中不起作用。在我看来,我的情况是非常典型的,但我仍然需要找到方法来在没有编码的情况下“破解”它。对我来说,它应该在_outbound-channel-adapter_ – Maciej