2017-05-04 59 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