динамический верблюд - PullRequest
2 голосов
/ 29 января 2011

Я хочу реализовать шаблон обогащения контента с верблюдом следующим образом:

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

Динамический URI основан на каждом сообщении, которое приходит из прямого канала: x.Итак, допустим, что в элемент XML поступает со значением a значение uri, которое должно быть равно http://someurl? Q = a , но dynamicUri может быть только идентификатором канала ресурса.я нашел некоторое обсуждение этого здесь , но я действительно не понимаю это, и "HttpProducer.HTTP_URI" не доступен в моем рабочем пространстве, какой пакет верблюда мне нужен для этого?и как мне это сделать, процессор может быть?но как?

1 Ответ

2 голосов
/ 30 января 2011

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

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

Content Enricher не поддерживает динамический 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");
...