java - 使用带 SI 的文件适配器移动文件

标签 java spring-integration

使用文件适配器移动文件 你好 我想在文件被消耗或失败后移动成功文件夹中的文件 出现问题时的文件夹。

我发现了不同的例子,但我想不出一个简单的例子 使用文件适配器移动文件的解决方案

可能我在使用 Spring Expression Language 时遇到问题,但是如果我使用

<int:poller default="true" fixed-delay="50"/>
<bean id="pseudoTransactionManager" class="org.springframework.integration.transaction.PseudoTransactionManager" />

<int:channel id="committedChannel"/>
<int:channel id="rolledBackChannel"/>

<int-file:inbound-channel-adapter channel="input" directory="target/input" filename-pattern="*">
 <int:poller fixed-rate="500">
           <int:transactional transaction-manager="pseudoTransactionManager" synchronization-factory="syncFactory" />
 </int:poller>
</int-file:inbound-channel-adapter>

<int:transaction-synchronization-factory id="syncFactory">
   <int:after-commit expression="payload.renameTo('/success/' + payload.name)" channel="committedChannel" />
   <int:after-rollback expression="payload.renameTo('/failed/' + payload.name)" channel="rolledBackChannel" />
</int:transaction-synchronization-factory>

<int:service-activator input-channel="input" ref="sampleEndpoint" output-channel="output"/>

<int:channel id="output"/>
<int-file:outbound-channel-adapter channel="output" directory="target/output"/>

我检索到以下错误 方法调用:无法在 java.io 上找到方法 renameTo(java.lang.String)。文件类型正确这是正确的,因为该方法不存在

如果我使用 payload.remove() 我删除文件而不是移动。 如果我不使用删除文件,它不会从 src 中删除

我认为这是一个虚拟配置或 SpEL 的简单使用,但是......我想不出一个线性解决方案

谢谢

马丁

最佳答案

示例中存在错误;应该是……

<int:after-commit expression="payload.renameTo(new java.io.File('/success/' + payload.name))" channel="committedChannel" />
<int:after-rollback expression="payload.renameTo(new java.io.File('/failed/' + payload.name))" channel="rolledBackChannel" />

关于java - 使用带 SI 的文件适配器移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835657/

相关文章:

java - mybatis中如何选择文本数组类型的结果?

java - 在 Google App Engine Java 开发服务器中处理大型数据集的最佳方式是什么?

java - Spring 集成 SLA 选项

spring - Eclipse Paho Mqtt - Spring Java 配置

java - 如何在Pycharm/Eclipse中分别查看Python/Java的内部代码实现?

java eclipse indigo 执行可执行 jar 时出现问题(属性文件位于项目的外部文件夹中)

java - 无法使用 jOOQ 编写 Postgres 数组列

java - 在评估 spring 集成表达式时获取类转换表达式

java - Spring Integration Gateway 中的超时表达式

java - Spring Integration 如何与 Web 服务( Jersey )交互?