我遇到了一个问题,即#34; myHeaderValue"在下面的插入语句中使用Camel / spring启动。 当我运行程序时,我在控制台上看到"标题中的Processed值为:one"但是我收到异常错误camel exchange delivery exception。 预期的原因是":#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 :(得分:0)
我发现如果我使用更复杂的(INSERT ... SELECT)语句就会失败,所以我假设camel不支持INSERT ... SELECT。这就是说我能够将我的代码修改为更简单的插入查询。所有人说,骆驼正在获取查询插入的标题是问题。
.to(“sql:insert into t_item(columnOne,columnTwo)VALUES(:#myHeaderValue,'two')”);