如何遍历apache camel route,xml中的arraylist?

时间:2017-11-04 08:09:44

标签: java xml apache-camel spring-dsl spring-camel

我想通过bean遍历作为消息头传递给camel路由的java arraylist,这样每个字符串项基本上都是一个url,可以作为uri参数传递给camel路由中的tag。

我通过java bean将数组列表作为消息头传递给camel路由,如下所示

ArrayList<String> list=new ArrayList<String>();//Creating arraylist  
              list.add("http://www.google.com");//Adding object in arraylist  
              list.add("http://www.stackoverflow.com");  
              list.add("http://www.tutorialspoint.com");  
              list.add("http://localhost:8080/sampleExample/query"); 
                exchange.getOut().setHeader("endpoints",list);

并且,在驼峰路线中我想迭代这个列表并逐个检索每个列表项,以便我可以在uri中传递这些项目。这是我的骆驼路线:

<route id="myroute">
        <from id="sedp" uri="cxfrs:http://{{env:POC_HOST}}/{{env:POC_PATH}}"/>
        <log id="_log1" message="Received query request from consumers"/>
        <bean beanType="com.company.myapp.poc.logic.ProcessRequest"
            id="queryProcessor" method="checkRequestType"/>

          // I want to iterate through the list here as <toD uri="${header.endpoints.item}" />


    </route>

但是我无法遍历列表中收到的每个项目作为header.endpoints在camel route中。

1 个答案:

答案 0 :(得分:0)

这是收件人列表EIP模式,而不是向N +目的地发送邮件:http://camel.apache.org/recipient-list.html

收件人列表EIP基本上是toD,但它可以执行1..N个端点。 toD只能做1。

它应该能够按原样显示您的邮件标题,例如ListCollection并发送到每个目的地。

所以

<recipientList>
  <header>endpoints</header>
</recipientList>