camel 文件组件正在连续读取同一文件,并且未检测到其他文件。
我有一条 Camel 路线,
<camelContext trace="false" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:C:/Books/input_dir?noop=true"/>
<dynamicRouter>
<method ref="fileRouter" method="routeFiles"></method>
</dynamicRouter>
</route>
</camelContext>
<bean id="fileRouter" class="org.test.demo.DynamicRouter"/>
和路由器一样,
public class DynamicRouter {
public String routeFiles(Exchange exchange){
final String fileName = (String) exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY);
System.out.println("FILENAME: "+fileName);
if(fileName.contains("survival")){
return "file:C:/Books/output_dir";
}else {
return "file:C:/Books/target_dir";
}
}
}
每当将 beahomelist 文件放入 C:/Books/input_dir
文件夹时,它都会读取第一个文件,并且永远不会停止,如下面的日志所示
FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist....
并且不会检测到同一文件夹中放入的任何其他文件。即使给出了 noop=true ,它也会发生。请就此提供一些建议。我使用的 Camel 版本:2.13.0
最佳答案
阅读有关动态路由器 eip 的文档,看到请注意!顶部的框
虽然看起来您应该使用“动态到”而不是动态路由器,但请参阅此常见问题解答
所以只需使用
<recipientList>
<method ref="fileRouter" method="routeFiles"></method>
</recipientList>
关于java - Camel 文件输入连续读取同一文件,即使给定 noop=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056966/