You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel中pollEnrich如何一次性消费所有文件?

在Apache Camel中让pollEnrich一次性消费所有文件的方法

是否存在某种方式或属性可让pollEnrich一次性消费所有文件?我无法使用from,因为路由中已使用timer,单路由不允许配置两个from。我的代码如下:

from("timer://foo")
.pollEnrich("file:src")
.aggregate(new ZipAggregationStrategy()).constant(false)
.completionFromBatchConsumer().eagerCheckCompletion()
.setHeader(Exchange.FILE_NAME, simple("file"+".zip"))
.to("file:src/test/java/out");

我希望将src目录下的所有文件压缩到指定文件夹,但pollEnrich当前是逐个消费文件,这引发了问题。


解决方法

  • 给pollEnrich的文件端点添加maxMessagesPerPoll=-1参数,该参数表示每次轮询消费目录下的所有文件(默认值为1,即每次只消费一个)。修改后的pollEnrich配置如下:
    .pollEnrich("file:src?maxMessagesPerPoll=-1")
    
  • 配合原有的completionFromBatchConsumer()配置,聚合器会一次性处理pollEnrich拉取的所有文件,完成批量压缩的需求。
  • 完整调整后的路由代码:
    from("timer://foo")
        .pollEnrich("file:src?maxMessagesPerPoll=-1")
        .aggregate(new ZipAggregationStrategy()).constant(false)
        .completionFromBatchConsumer().eagerCheckCompletion()
        .setHeader(Exchange.FILE_NAME, simple("file.zip"))
        .to("file:src/test/java/out");
    

内容的提问来源于stack exchange,提问作者Mahendranath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:01:12