【问题标题】:Filtering the list of files based on the value obtained from another file (Apache Camel File component)根据从另一个文件(Apache Camel File 组件)获得的值过滤文件列表
【发布时间】:2019-01-21 14:29:44
【问题描述】:

我需要根据从另一个文件接收到的内容创建一个文件过滤器(从文件夹中挑选文件)。 我设置了这样的路线:

File1 Url -> pollEnrich(File2 Url with filter, aggregationStrategy) -> log

但问题是在 pollEnrich 中,从 File1 获得的值不可用。因此,我无法创建一个过滤器,我必须根据该过滤器从 Folder2 中选择文件。

我尝试了 URL 中的文件管理器选项以及编程过滤器(通过扩展 GenericFileFilter 类)。非常感谢任何建议。

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    回忆content-enricher的事实,

    pollEnrich 只接受一条消息作为响应

    pollEnrich 在调用文件组件时会收集单个文件。因此,您应该在 pollEnrich 中使用带有fileName 选项的文件组件来收集单个文件,并使用 while 循环多次调用 pollEnrich。

    【讨论】:

    • 感谢您的回答。我现在明白了,但有一个问题 - 即使它通过收集单个文件得到一个响应,为什么过滤器不起作用?我使用的是 Camel 2.20 版,因此根据 Camel 文档,Camel 无法在当前交换中使用信息的限制不再适用。我想我应该使用收件人列表来满足我的原始要求 - 让我检查一下,然后更新。
    • 我的错误..不是收件人列表。要么需要使用循环。或聚合器 EIP
    • 我改变了方法。我轮询了每个文件,用另一个文件(作为标题添加)丰富了内容,然后使用过滤器 EAP 只接受满足条件的文件。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多