【问题标题】:Apache-Camel Choice on FiletypeApache-Camel 文件类型选择
【发布时间】:2014-01-25 13:31:05
【问题描述】:

下面列出的代码可以正常工作,但它的功能是查看 XML 文件,如果字段为“我们”,则将其移动到另一个目录;关于使用 .choice() 函数我想了解的内容:

1) 如何指定要路由的特定文件? (将文件名添加到路径末尾不起作用)

2) 如何指定要路由的文件类型? (例如:将所有 .txt 文件路由到“blah”)

3) 除了使用 .choice 之外,还有其他选项可以帮助我做到这一点吗?

CamelContext context = new DefaultCamelContext();
    context.addRoutes(new RouteBuilder()
    {
        public void configure() throws Exception
        {
            from("file:C:\\camels\\inner?delete=true")
                .choice()
                    .when(xpath("/author/country = 'us'"))
                        .to("file:C:\\testing");
        }
    });
    context.start();
    Thread.sleep(10000);
    context.stop();

【问题讨论】:

    标签: java routing apache-camel


    【解决方案1】:

    这里有一些方法可以做到这一点

    • 查看 http://camel.apache.org/file-language.html 以了解骆驼公开的文件语言,这提供了一些选项,您可以使用这些选项来获取 带扩展名的文件名、仅文件名、文件父文件扩展名等。 .

    • 同时查看http://camel.apache.org/file2.htmlinclude 选项,这将有助于仅轮询文件名与正则表达式匹配的文件。

      from("file:C:\\camels\\inner?delete=true&include=abc")
      
    • 构建一个谓词并像下面这样使用它:

      CamelContext context = new DefaultCamelContext();
      context.addRoutes(new RouteBuilder()
      {
          Predicate predicate = PredicateBuilder.and(simple("${file:name.ext} == 'txt'"), XPathBuilder.xpath("/author/country = 'us'"));
          public void configure() throws Exception
          {
              from("file:C:\\camels\\inner?delete=true")
                  .choice()
                      .when(predicate)
                          .to("file:C:\\testing");
          }
      });
      context.start();
      Thread.sleep(10000);
      context.stop();
      

    【讨论】:

    • 感谢您的帮助和资源!这是完美的。
    • 谓词中有错字。我必须将其写为 ...simple("${file:name.ext} == 'txt'") 才能使我的案例工作。但这很容易解决,谢谢其余的。我很难理解谓词实例化和所有可用的语言,这非常有帮助。
    【解决方案2】:

    回答您问题的前两点:有可能 - 看看documentation。名为 fileName 的参数在那里有很好的描述,它允许您非常严格地控制文件名和扩展名(实际上是名称的一部分)。

    当谈到第 3 点时,如果您的“选择”只有一种情况,那么我建议您使用过滤器 component rather 然后选择。

    它将允许您轻松地模拟路由,例如当 *xml 确实是 XML 并包含国家/地区“我们”时,它会被路由到您的“测试”目录。请注意,当出现错误文件(非 XML)时,可能需要捕获一些异常;)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 2018-12-18
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多