2015-03-24 3 views
1

Я пытаюсь объединить сообщения, используя jsonpath в activemq. Но когда я пытаюсь запустить ActiveMQ, я получаю такое исключение:Не найдено ни одного языка для jsonpath

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(); 

ответ

3

версия верблюд в комплекте с ActiveMQ ограничивается сделать основной маршрут и из очереди.

Вы можете расширить зависимости в своем lib/camel с функциями, которые вы хотите. Начните с банку верхнего уровня и возьмите все зависимости от Maven. То есть camel -. jar В вашем случае, если вы используете activemq 5.11.0, это будет camel-jsonpath-2.14.1.jar

Обычно я использую такой скрипт (используя Apache Ivy для загрузки графика зависимости) в папке apache-activemq-5.11.0/lib/camel. Отрегулируйте скрипт, если вам нужно использовать 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  

Обратите внимание на очистку в конце. Удалите все зависимости, которые могут привести к конфликту с другими зависимостями, уже найденными в папке lib ActiveMQ.