2017-09-02 132 views
0

我在使用Camel/spring啓動時在下面的插入語句期間得到「myHeaderValue」的問題。 當我運行程序時,我在控制檯上看到「頭文件的處理值爲:1」,但是我收到一個異常錯誤駱駝交換傳遞異常。 預期的原因是「:#myHeaderValue」未填充在下面的查詢中。如果我理解駱駝,我認爲標題一直存在並傳遞給端點。駱駝春季開機 - 交換問題

請告訴我如何將#myHeaderValue傳遞給插入結束點。

springBootVersion:1.5.4.RELEASE 駱駝:2.19.1

from("sql:SELECT columnOne, columnTwo from t_item" 
      + "?consumer.initialDelay=3000" 
      + "&consumer.delay=3000" 
      + "&outputClass=mypackage.model.Item") 
     .process(itemProcessor) 
     .log("Processed value from header is : ${header.myHeaderValue}") 
     .log("insert into t_item(columnOne, columnTwo) VALUES(${header.myHeaderValue}, 'two'") 
     .to("sql:insert into t_item(columnOne) SELECT 'data' FROM t_store whhere header = :#myHeaderValue") 
     .log("Row inserted") 
     .end(); 

//從ItemProcessor中

@Override 
public void process(Exchange exchange) throws Exception { 
    exchange.getIn().setHeader("myHeaderValue", "one"); 
} 
+0

您應該最有可能編寫headers.myHeaderValue。注意標題中的「s」。 –

回答

0

我發現,如果我用了一個更復雜的(INSERT ... SELECT )語句失敗,所以我認爲駱駝不支持INSERT ... SELECT。這就是說我能夠將我的代碼修改爲更簡單的插入查詢。所有說,駱駝得到的查詢插入頭是問題。 (「sql:insert into t_item(columnOne,columnTwo)VALUES(:#myHeaderValue,'two')」);