2011-01-29 2 views
2

я хочу реализовать content enricher pattern с верблюдом, как это:верблюд динамический параметр URI

from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y") 

Динамический Ури на основе каждого сообщения, которое исходит от прямой: х канала. Итак, давайте скажем, что элемент xml входит со значением a, а uri должен быть как http://someurl?q=a, но dynamicUri может быть только идентификатором канала ресурса. Я нашел какое-то обсуждение этого вопроса here, но я действительно не понимаю его, и «HttpProducer.HTTP_URI» недоступен в моей рабочей области, какой пакет верблюда мне нужен? и как я могу это сделать, возможно, процессор? но как?

ответ

2

Какую версию Camel вы используете?

Многие из этих постоянных имен ключей были перемещены в класс org.apache.camel.Exchange в Camel 2.0 и далее. Поэтому взгляните на этот класс для константы HTTP_URI. Это также то, что в списке на вики-странице http://camel.apache.org/http

Содержание Обогатитель не поддерживает динамический URI, но некоторые компоненты Camel позволяют установить URI в качестве заголовка; таких как верблюд-http. Что означает, что в вашем случае вы можете предоставить uri в качестве заголовка, используя константу Exchange.HTTP_URI.

Однако, упомянутый шаблон EIP-списка получателей в Camel фактически поддерживает оценку полностью динамического URI, а также поддерживает агрегацию. http://camel.apache.org/recipient-list.html

Таким образом, вы могли бы реализовать решение, как это:

from("direct:x") 
    .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy()) 
    .to("direct:y"); 
Смежные вопросы