2017-05-04 58 views
1

正如标题所说:是否有可能启动路线(-builder)的处理功能中的骆驼终点?我是apache camel的新手,但已经做了一些项目。是否有可能启动过程中的骆驼端点()

情况如下: 我结合使用Apache的骆驼与西门子的Teamcenter RAC执行SavedQuery。结果是一个带有找到的元素的ModelObject []。

对于这些元素我现在要开始另一个端点执行第二搜索查询。我想过类似的东西:

//within .process() 
for (ModelObject ob : arrModelObjects) { 
    // something like: .to("direct:searchnew") 
} 

但我不能在处理器内引用外部函数“.to()”。是否有解决方法或解决方案,或者我正在考虑错误的方法?

+0

在ProducerTemplate –

+0

或[内容浓缩塔(HTTP看看/camel.apache.org/content-enricher.html)如果你需要做第二次查询,并在您ModelObject –

+0

需要每个对象“送”到端点的结果,所以我期待在生产者模板第一。内容富集似乎是我得到了,因为producerTemplate的nullpoiinterexception不是实例走错路 – IVIike

回答

0

由于@Rathna提到可以使用producerTemplate。

您可以从您背景下,新的制作模板,你可以形成你的交换如下:/:

public class MyProcessor implements Processor{ 

@Override 
public void process(Exchange exchange) throws Exception { 
    ProducerTemplate producerTemplate = exchange.getContext().createProducerTemplate(); 

    ModelObject[] arrModelObjects = (ModelObject[]) exchange.getIn().getBody(); 

    for (ModelObject ob : arrModelObjects) { 
     producerTemplate.sendBody("direct:someEndpoint", ob); 
    } 
} 

}

+0

谢谢,正在工作! ;) – IVIike

0
class MyProcessor implements Processor{ 

    private ProducerTemplate producerTemplate; 
     @Override 
     public void process(Exchange exchange) throws Exception { 
     for (ModelObject ob : arrModelObjects) { 
       producerTemplate.send("direct:searchnew",exchange);  
     }} 
    } 

将producerTemplate添加到CamelContext中。

+0

... – IVIike

+0

将其添加为<骆驼:模板ID =“producerTemplate”>在您的配置,您已经在骆驼上下文 – rathna

+0

定义您的路线建设者我没有使用骆驼上下文,我有一个java主类,我运行org.apache.camel.main.Main类 – IVIike