Java 使用SI的文件适配器移动文件

Java 使用SI的文件适配器移动文件,java,spring-integration,Java,Spring Integration,使用文件适配器移动文件 你好 我想在Suces文件夹中的文件被使用或使用失败后将其移动 文件夹出现问题时 周围我发现了不同的例子,但我想不出一个简单的例子 使用文件适配器移动文件的解决方案 可能我在使用Spring表达式语言时有问题,但是如果我使用 <int:poller default="true" fixed-delay="50"/> <bean id="pseudoTransactionManager" class="org.springframework.integra

使用文件适配器移动文件 你好 我想在Suces文件夹中的文件被使用或使用失败后将其移动 文件夹出现问题时

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

可能我在使用Spring表达式语言时有问题,但是如果我使用

<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.File类型上找不到正确的方法重命名(java.lang.String)
这是正确的,因为该方法不存在

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

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

谢谢


martin

样本中有一个bug;应该是

<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" />