java - Camel 文件输入连续读取同一文件,即使给定 noop=true

标签 java spring routes apache-camel camel-ftp

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/

相关文章:

php - 路由注释中的环境变量

java - 使用 JasperReports API 从 bean 异常中获取字段值时出错

java - 我可以将依赖的 jar 文件直接包含在 jboss EAP 7.3 容器中吗?

java - Java EE 服务器上的 Exec 运行时

java - 取决于环境的 Spring 接线

python - 为什么错误处理程序不处理 Python/Flask 中包含尖锐 ("#") 登录的不存在的 URL

ruby-on-rails - Rails 中事件管理中的默认操作不会使 "delete"按钮创建销毁链接

java - 无法在 REST/JERSEY 中调用 @DELETE Web 服务

java - 如何使用注释和纯 Java 在 Spring 中设置 hibernate.hbm2ddl.auto

java - Swagger-ui 与 Spring 安全性