Reputation: 2417
i want to implement the content enricher pattern with camel like this:
from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y")
The dynamic uri is based on each message which comes from the direct:x
channel.
So let's say there is an xml item coming in with the value a
then the uri should be like http://someurl?q=a but the dynamicUri can only be a resource channel identifier.
I found some discussion on this here but i don't really understand it and the "HttpProducer.HTTP_URI" is not available in my workspace. Which camel package do I need for this and how do I do this? A processor maybe, but how?
Upvotes: 3
Views: 1996
Reputation: 55540
What version of Camel are you using?
Many of those constant names for keys has been moved to to org.apache.camel.Exchange class in Camel 2.0 onwards. So take a look at this class for the HTTP_URI constant. That's also what's listed on the wiki page http://camel.apache.org/http
The Content Enricher doesn't support a dynamic URI, but some Camel components allow to set an uri as a header; such as the camel-http. Which mean in your case you can provide the uri as a header using the constant Exchange.HTTP_URI.
However that said, the Recipient List EIP pattern in Camel actually supports to evaluate the URI fully dynamic, and it also supports aggregation. http://camel.apache.org/recipient-list.html
So you could implement the solution like this:
from("direct:x")
.recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy())
.to("direct:y");
Upvotes: 2