找不到 jsonpath 的语言

No language could be found for jsonpath

我正在尝试在 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

我的路线是这样的:

from("activemq:queue:test.other")
                .choice()
                .when().jsonpath("$.person[?(@.position = 'manager')]")
                .to("activemq:queue:test.manager")
                .otherwise()
                .to("activemq:queue:test.nonManager")
                .end();

与 ActiveMQ 捆绑在一起的 camel 版本仅限于执行进出队列的基本路由。

您可以使用所需的功能扩展 lib/camel 中的依赖项。从顶级 jar 开始,从 Maven 获取所有依赖项。 IE。 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 文件夹中已找到的其他依赖项发生冲突的依赖项。