【问题标题】:camel spring boot - exchange issue骆驼弹簧靴 - 交换问题
【发布时间】:2018-02-08 14:11:29
【问题描述】:

我在使用 Camel/spring boot 在下面的插入语句中获取“myHeaderValue”时遇到问题。 当我运行程序时,我在控制台上看到“来自标头的已处理值是:一个”,但是我收到一个异常错误骆驼交换交付异常。 预期的原因是“:#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");
}

【问题讨论】:

  • 您很可能应该编写 headers.myHeaderValue。注意标题中的“s”。

标签: spring-boot apache-camel


【解决方案1】:

我发现如果我使用更复杂的 (INSERT ... SELECT) 语句它会失败,所以我假设骆驼不支持 INSERT ... SELECT。也就是说,我能够将我的代码修改为更简单的插入查询。总而言之,骆驼得到了查询插入的标题是问题所在。

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

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2018-10-12
    • 2018-02-14
    • 1970-01-01
    • 2019-05-03
    相关资源
    最近更新 更多