#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