Простое выражение в apache-верблюжий uri

#java #apache-camel

#java #apache-camel

Вопрос:

Я новичок в apache-camel и знаю, что столкнулся с проблемой. Я хочу использовать простые выражения в своем определении uri, но я не знаю как.

Например:

 from("foo://bar").to("foo://bar?var=${header.varName}");
  

Есть ли способ использовать такие выражения?

Ответ №1:

Бернхард

http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

Используйте шаблон EIP списка получателей, который позволяет вычислять динамический URI с использованием выражения. Например, с использованием языка простых выражений, как показано ниже:

 recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))
  

Комментарии:

1. Большое вам спасибо. Просто интересно, почему я этого не нашел 🙂

2. похоже, это единственный способ.

Ответ №2:

Другой способ — использовать свойство «CamelXsltResourceUri» в заголовке.

 .setHeader("CamelXsltResourceUri",simple("xslt:<path>/<to>/<template>"))
  

«Список получателей (простой(«freemarker://templateHome/${body.TemplateName}.ftl»))»

Выбранный ответ не сработал для меня, так как мне пришлось использовать пользовательский uriresolver

Ответ №3:

Используйте toD() , тогда можно использовать динамический uri. список получателей предназначен для нескольких назначений, а не для правильного EIP.

Однако вам может потребоваться избегать создания слишком большого количества разных URL-адресов с вашим simple() выражением. Смотрите: https://camel.apache.org/components/3.18.x/eips/toD-eip.html