我试图在activemq中使用jsonpath聚合消息。 但是当我尝试启动activemq时,我得到了这样的异常:
ERROR: org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRo
uteException: Failed to create route route2 at: >>> Choice[[When[jsonpath{$.pers
on[?(@.position = 'manager')]} -> [To[activemq:queue:test.manager]]]] Otherwise[
[To[activemq:queue:test.nonManager]]]] <<< in route: Route(route2)[[From[activem
q:queue:test.other]] -> [Choice[[... because of No language could be found for:
jsonpath
My Route看起来像这样:
from("activemq:queue:test.other")
.choice()
.when().jsonpath("$.person[?(@.position = 'manager')]")
.to("activemq:queue:test.manager")
.otherwise()
.to("activemq:queue:test.nonManager")
.end();
答案 0 :(得分:4)
与ActiveMQ捆绑在一起的camel版本仅限于在队列之间进行基本路由。
您可以使用所需功能扩展lib / camel中的依赖项。从顶级jar开始,从Maven获取所有依赖项。即camel - .jar在你的情况下,如果你使用activemq 5.11.0,它将是camel-jsonpath-2.14.1.jar
我通常在apache-activemq-5.11.0 / lib / camel文件夹中使用这样的脚本(使用Apache Ivy下载依赖图)。如果您需要使用Windows或类似软件,请调整脚本。
curl -L -O http://search.maven.org/remotecontent\?filepath\=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar
java -jar ivy-2.3.0.jar -dependency org.apache.camel camel-jsonpath 2.14.1 -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]"
rm slf4j-api-1.6.6.jar
rm ivy-2.3.0.jar
注意清理到底。删除可能导致与ActiveMQ的lib文件夹中已有的其他依赖项冲突的所有依赖项。