2011-09-22 5 views
1

Предположим, у вас есть маршрут как:Camel идиома маршрут динамически на основе значения в теле сообщения

from("direct:start").to("http://some.endpoint/accounts/"); 

где сообщение передается через direct:start является XML:

<payload> 
    <account id="1">Bob</account> 
</payload> 

Что идиоматический способ извлечь учетную запись id и добавить ее в конечную точку to, чтобы отправить это сообщение http://some.endpoint/accounts/1?

ответ

0

Смотрите эту справку о динамической к http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

+0

Я _knew_ она существует! – dm3

+0

Я тестирую его с конечной точкой seda, и он продолжает сбой от ('seda: input'). To ('seda: $ {in.header.output}') Все, что я получаю, является исключением: «Нет Конечная точка может быть найдена для: $ {in.header.output} ". Любая подсказка о том, как заставить его работать? –

+0

Btw - проверял его на «прямые» конечные точки, и он также не работает. Я использую Camel 2.8.3, а также 2.9.0-RC1 –

2

вы можете использовать шаблон recipient list для создания динамических конечных точек на основе данных Exchange.

from("direct:start") 
.recipientList(constant("http://some.endpoint/accounts/") 
       .append(XPathBuilder.xpath("/payload/account/@id", String.class)));