3

我想用骆驼实现内容丰富器模式,如下所示:

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

动态 uri 基于来自direct:x通道的每条消息。因此,假设有一个带有值的 xml 项,a那么 uri 应该类似于 http://someurl?q=a 但 dynamicUri 只能是资源通道标识符。

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

4

1 回答 1

2

你用的是什么版本的骆驼?

从 Camel 2.0 开始,许多用于键的常量名称已移至 org.apache.camel.Exchange 类。所以看看这个类的 HTTP_URI 常量。这也是维基页面 http://camel.apache.org/http上列出的内容

Content Enricher 不支持动态 URI,但一些 Camel 组件允许将 uri 设置为标头;比如camel-http。这意味着在您的情况下,您可以使用常量 Exchange.HTTP_URI 将 uri 作为标头提供。

不过话虽如此,Camel 中的收件人列表 EIP 模式实际上支持完全动态评估 URI,并且它还支持聚合。 http://camel.apache.org/recipient-list.html

所以你可以像这样实现解决方案:

from("direct:x")
    .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy())
    .to("direct:y");
于 2011-01-30T07:43:14.330 回答