【问题标题】:Execute route only when direct component is called仅在调用直接组件时执行路由
【发布时间】:2019-02-15 08:29:04
【问题描述】:

我想在调用“直接”路由时解压缩文件。我从其他直接路径获得的文件名。

from("direct:unZipFile")
                .from("file:C:\\MYFILES\\File\\Unzipped\\?fileName=${header.fileName}&idempotent=true")
                .split(new ZipSplitter())
                .streaming()
                .to("file:C:\\MYFILES\\File\\Unzipped\\")
                .split(body().convertToString().tokenize("\n"))
                .transform()
                .simple("${in.body}")
                .end();

现在当我调用直接组件时它正在工作,但它也会继续扫描目录并处理相同的文件。我知道上面的代码允许从直接组件和文件组件触发,但我只希望它从“直接”组件执行,我不能删除“文件”组件,因为只有我正在读取文件。

【问题讨论】:

    标签: apache-camel spring-camel


    【解决方案1】:

    你也可以尝试使用pollenrich

    from("direct:unZipFile")
    .pollEnrich.simple("file:C:\\MYFILES\\File\\Unzipped\\?fileName=${header.fileName}")
    .split(new ZipSplitter())
    .streaming()
    ...
    

    【讨论】:

      【解决方案2】:

      你可以使用 consumerTemplate

      from("direct:unZipFile")
                      .process(exchange -> { 
                          Exchange recvFiles = exchange.getContext().createConsumerTemplate().receive("file:C:\\MYFILES\\File\\Unzipped\\?fileName=${header.fileName}&idempotent=true");
      exchange.getIn().setBody(recvFiles.getIn().getBody());
      exchange.getIn().getHeaders().putAll(recvFiles.getIn().getHeaders());
      })
                      .split(new ZipSplitter())
                      .streaming()
                      .to("file:C:\\MYFILES\\File\\Unzipped\\")
                      .split(body().convertToString().tokenize("\n"))
                      .transform()
                      .simple("${in.body}")
                      .end();
      

      【讨论】:

        【解决方案3】:

        您也可以使用java.io.File 设置消息正文,在其中您可以在几行 Java 代码中计算文件名,但是是的,否则 pollEnrich 是解决此问题的 EIP 模式解决方案。

        【讨论】:

          猜你喜欢
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-30
          • 1970-01-01
          • 2015-10-02
          • 2019-01-31
          • 2023-03-14
          相关资源
          最近更新 更多