Apache camel camel:在嵌套循环中设置正文和转发

Apache camel camel:在嵌套循环中设置正文和转发,apache-camel,Apache Camel,我有一个使用groovy inside transform标记将消息体设置为列表的路由。问题是消息体设置在嵌套循环中。一旦设置了消息体,我需要将消息发送到单独的路由,并在循环中执行此操作。我不清楚如何在迭代中做到这一点。这就是我现在拥有的: <route id="contentSearch"> <from uri="direct:contentSearch" /> <transform>

我有一个使用groovy inside transform标记将消息体设置为列表的路由。问题是消息体设置在嵌套循环中。一旦设置了消息体,我需要将消息发送到单独的路由,并在循环中执行此操作。我不清楚如何在迭代中做到这一点。这就是我现在拥有的:

    <route id="contentSearch">
        <from uri="direct:contentSearch" />            
        <transform>
            <groovy>
                def endPoint = camelContext.getEndpoint("activemq:contentPageHandler");
                def producer = endPoint.createProducer();
                for(cur in body['type'])
                {
                    ......
                     for(sec in body['section'])
                     {    
                        ........                  
                        def exchange = endPoint.createExchange();
                        exchange.getIn().setBody(contentList);
                        producer.process(exchange);

                     }
                  }

            </groovy>
        </transform>            
    </route>  
我试图达到的溃败是:

    <route id="contentPageHandler">
        <from uri="activemq:contentPageHandler?transacted=true"/>          
        <log message="!!! body:${body}" logName="logContentPageHandler"/>    
    </route>   

我必须承认,我不确定这里到底出了什么问题,因为我对骆驼很陌生。我希望能够在上面的groovy代码中使用名为logContentPageHandler的日志,但到目前为止我也没有成功。非常感谢您的帮助。

我不确定您真正想做什么,但我将尝试从较高的层次进行解释

camel中有用于不同事物的不同构造。转换器的目的是转换并返回有效负载。然后,您可以使用将消息的各个部分发送到端点。不要事事都使用groovy transformer

我的目标是使用groovy代码创建一个java.util.List节

<transform>
 <groovy>
   for(sec in body['section']){
      // create a list..
   }
   return listOfSections;
  </groovy>
</transform>
<split>
 <simple>${body}</simple>
 <to uri="activemq:contentPageHandler"/>
</split>

该错误是与同步相关的超时错误。我必须将我的to标记更改为inOnly标记,还必须将其从direct更改为:

<from uri="direct:contentSearch" /> 
从activemq删除

<from uri="activemq:contentSearch?transacted=true" />

嗨,彼特,谢谢你的来信。我遇到的问题是数组是多页中的一页。这就是为什么单个数组不能有一个return语句-循环必须不断带来更多的页面/数组-这是一个批量处理。好吧,很难说清楚。我还是觉得你可以用拆分器做点什么。无论如何,您应该在代码中使用producerTemplate。看看这个例子:关于从Transformer发送的更新答案producer类并不是真的打算这样直接使用的,所以-不确定。产品模板是一条路要走。
<from uri="direct:contentSearch" /> 
<from uri="activemq:contentSearch?transacted=true" />