Apache camel 驼峰动态uri参数

Apache camel 驼峰动态uri参数,apache-camel,enterprise-integration,Apache Camel,Enterprise Integration,我想用camel实现如下功能: from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y") from("direct:x") .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy()) .to("direct:y")

我想用camel实现如下功能:

from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y")
from("direct:x")
    .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy())
    .to("direct:y");
动态uri基于来自
direct:x
频道的每条消息。 因此,假设有一个xml项带有值
a
,那么uri应该是http://someurl?q=a 但是dynamicUri只能是资源通道标识符


我找到了一些关于这个的讨论,但我并不真正理解它,而且“HttpProducer.HTTP_URI”在我的工作区中不可用。我需要哪一个驼峰包,我该怎么做?可能是处理器,但如何使用?

您使用的是什么版本的Camel

在camel 2.0以后的版本中,键的许多常量名称都已移动到org.apache.camel.Exchange类中。因此,我们来看看这个类中的HTTP_URI常量。 这也是维基页面上列出的内容

Content-Enricher不支持动态URI,但是一些Camel组件允许将URI设置为头;比如骆驼http。这意味着在您的示例中,可以使用常量Exchange.HTTP_uri提供uri作为头

尽管如此,Camel中的收件人列表EIP模式实际上支持完全动态地评估URI,并且还支持聚合。

因此,您可以像这样实施解决方案:

from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y")
from("direct:x")
    .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy())
    .to("direct:y");