问题:
我需要处理不同的巨大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。
答案 0 :(得分:2)
编译:
from("queue:foo")
.choice().when(xpath("//foo"))
.to("queue:bar")
.otherwise()
.to("queue:others");
构建content-based-router时,需要.when()来测试谓词表达式。