【问题标题】:Camel from direct read file and process骆驼从直接读取文件和进程
【发布时间】:2017-02-08 13:49:51
【问题描述】:

我在骆驼中有两条平行路线。一是读取sql数据。一种是读取磁盘上的文件,然后与之前的 sql 数据进行比较。我需要运行路线一,并根据是否导入任何内容,运行路线 2。

fromF("quartz2://mio/%s?cron={{route_1_cron}}", order).
        log("Running data import...").

        to("sql:{{sql_select}}").
            choice().
                when(body().isNull()).
                    stop().

                when(body().isNotNull()).
                bean(Utility.class,"incomingSqlData").
                choice().when(header("status").isEqualTo(true).
                to("direct:start").stop();

到目前为止,我很好。现在在第二条路线上,我如何从 from(direct:start) 开始,然后从它的目录中读取文件?因为我不能拥有 from(direct).from("file:..),因为那会创建两个 from 路由。 并且使用 from("direct:start").to("file:...") 将尝试写入文件。

Tl:dr:我应该如何使用 direct 开始路由,然后读取文件?

【问题讨论】:

标签: apache-camel


【解决方案1】:

要扩展 @noMad17 评论,您可以使用内容丰富器。因此,您的 from("direct:start") 路线可能类似于:

from("direct:start")
  .pollEnrich("file:...", new MyAggregationStrategy())
  ....

这将提示您读取文件的路径。

注意AggregationStrategy"用于合并原始交换和资源交换",是可选的。如果未提供,则资源交换的主体(即读取文件产生的交换)将覆盖原始交换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2023-04-02
    • 2018-12-08
    相关资源
    最近更新 更多