Jay*_*Jay 6 split apache-camel
我必须为数组 B 的每个元素调用一个服务。但数组 A 在数组 A 内。所以我尝试在camel_Context.xml 中使用 split inside split,如下所示。一旦执行了所有内部分割数组值,我还需要聚合它们。
<split>
<jsonpath>$.Request.Fruits</jsonpath>
<split>
<jsonpath>$.request.Fruits[index].item</jsonpath>
<to someURI>
</split>
</split>
Run Code Online (Sandbox Code Playgroud)
我在内部分割中使用的索引应该表示外部分割的当前迭代。CamelSplitIndex 将为您提供内部拆分的迭代次数。我不确定如何在外部分割中使用任何显式计数器。请问还有其他方法可以实现我的目标吗?
您可以设置自定义标题
<split>
<jsonpath>$.Request.Fruits</jsonpath>
<setHeader headerName="OuterIndex">
<simple>${header.CamelSplitIndex}</simple>
</setHeader>
<split strategyRef="aggregatorBean">
<jsonpath>$.request.Fruits[index].item</jsonpath>
<setHeader headerName="InnerIndex">
<simple>${header.CamelSplitIndex}</simple>
</setHeader>
<to someURI>
<log message="Hello from inner ${header.InnerIndex} of outer ${header.OuterIndex}" />
</split>
</split>
Run Code Online (Sandbox Code Playgroud)
您可以使用 bean 作为AggregationStrategy来使用您的逻辑聚合结果(有关更多详细信息,请参阅拆分器模式页面)。在这种策略中,如果需要,您可以读取两个标头。
请注意,每个<split>都会自动迭代您的数组,就像 java 增强 一样for,因此想象路线大致如下:
// <split> is very much like
for (Fruit f : request.getFruits()) {
// outer loop
for (Item i : f.getItems() {
// inner loop, <to someURI> is located here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4158 次 |
| 最近记录: |