2017-09-02 186 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')”);