高效的基于Camel内容的路由器:使用Java DSL

时间:2017-09-13 15:37:56

标签: java xpath routes apache-camel dsl

问题:

我需要处理不同的巨大XML文件。每个文件都包含一个节点,我可以用它来识别传入的xml消息。根据节点/标记,消息应发送给专用接收者。

不应将XML消息转换为String,然后使用 contains 进行检查,因为这样效率非常低。相反,xpath应该用于“探测”消息以发生预期的节点。

解决方案应该基于camel的Java DSL。代码:

from("queue:foo")
.choice().xpath("//foo")).to("queue:bar") 
.otherwise().to("queue:others");
Camel's Doc中建议的

无法编译。我正在使用Apache Camel 2.19.0。

1 个答案:

答案 0 :(得分:2)

编译:

    from("queue:foo")
        .choice().when(xpath("//foo"))
            .to("queue:bar") 
        .otherwise()
            .to("queue:others");

构建content-based-router时,需要.when()来测试谓词表达式。