1

骆驼文件组件不断读取同一个文件,没有检测到其他文件。

我有一条骆驼路线,

<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文件夹时,它会读取第一个文件并且永远不会停止,如下面的日志

文件名:beahomelist 文件名:beahomelist 文件名:beahomelist 文件名:beahomelist 文件名:beahomelist 文件名:beahomelist 文件名:beahomelist 文件名:beahomelist....

并且不会检测到放在同一文件夹中的任何其他文件。即使给出了 noop=true ,它也会发生。请就此提出一些建议。我正在使用骆驼版本:2.13.0

4

1 回答 1

1

阅读有关动态路由器 eip 的文档,请参阅注意!顶部的盒子

尽管看起来您应该使用“动态到”而不是动态路由器,但请参阅此常见问题解答

所以只需使用

  <recipientList>
        <method ref="fileRouter" method="routeFiles"></method>
    </recipientList>
于 2014-08-04T09:50:29.033 回答