骆驼春靴 - 交换问题

时间:2017-09-02 02:45:47

标签: spring-boot apache-camel

我遇到了一个问题,即#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");
}

1 个答案:

答案 0 :(得分:0)

我发现如果我使用更复杂的(INSERT ... SELECT)语句就会失败,所以我假设camel不支持INSERT ... SELECT。这就是说我能够将我的代码修改为更简单的插入查询。所有人说,骆驼正在获取查询插入的标题是问题。

.to(“sql:insert into t_item(columnOne,columnTwo)VALUES(:#myHeaderValue,'two')”);