我将网址列表存储在Apache camel标头中,下面是代码,
List<String> supplierHotelRefs = new ArrayList();
supplierHotelRefs.add("a.com");
supplierHotelRefs.add("b.com");
supplierHotelRefs.add("c.com");
exchange.getIn().setBody(supplierHotelRefs);
现在,我需要遍历标题中的此列表,并调用url。这应该是并行活动。我尝试了split(..),如果我们将列表存储在主体中,它会很好地工作,但是由于某些限制,我无法将其存储在主体中。如果我获得代码来迭代和并行处理Camel标头中存在的集合,这将很有帮助。
问候,
拉加万
最佳答案
您可以在标题中设置列表,然后在该标题上拆分。
exchange.getIn().setHeader("supplierHotelRefs",supplierHotelRefs);
在您的路由定义中,您可以基于header属性进行拆分并并行处理它们。
from("").....
//split based on the header
split(header("supplierHotelRefs"))
//process every split exchange parallely
.parallelProcessing()
//end split block
.end()
//continue route definition after split
.log("completed split processing")
请注意,调用者线程仍将等待所有拆分消息完成。