我对主要路线和子路线有要求。在主路径中将获取对象列表,在此我需要为列表中的每个单独元素调用子路径。 然后在Child路由中,通过将该元素附加为参数之一来调用Web服务。
代码:
from("direct:SupplierRoute")
.choice()
.when(header(IS_SUPPLIER_AVAILABLE).isEqualTo(true))
.split(body())
.parallelProcessing()
.streaming()
.to("direct:SUPGetHotelAggregatorRatesRQ")
.bean(parallelProcessingRequestProcessor)
.end()
.end()
.end();
from("direct:SUPGetHotelAggregatorRatesRQ")
.process(startOperation(DISTRIBUTION, GET_HOTEL_AGGREGATOR_RATES_API_GENERATE_VM_REQUEST))
.to("velocity:velocity/GetHotelAggregatorRatesRQToGetHotelSupplierRatesRQ.vm")
.process(endOperation(DISTRIBUTION, GET_HOTEL_AGGREGATOR_RATES_API_GENERATE_VM_REQUEST))
.end();
我将值设置为交换主体,如下所示,
public static final List<HotelRefs.HotelRef> supplierHotelRefs = new ArrayList();
exchange.getIn().setBody(supplierHotelRefs);
但是上面的代码示例不起作用,如果有人让我们知道骆驼中是否有任何方法可以在路由级别迭代用户定义的集合。
谢谢, 拉加万
答案 0 :(得分:0)
在Splitter后面放置一条日志语句并运行代码。
.split(body())
.log("How many log lines do you receive?")
如果仅获得一条日志行,则拆分器将无法正常工作。然后,您可以尝试使用其他Camel版本。
如果您获得的日志行数与ArrayList包含元素的数目一样多,则迭代工作正常,您将遇到另一个问题。然后,您应该找出真正的问题并提出一个新问题。
如果您根本没有日志行,则无法满足when
中的条件。