Camel存储过程调用不能使用变量?

时间:2018-02-15 22:31:46

标签: stored-procedures apache-camel firebird

尝试按照这种方法构建一个通用的REST到存储过程的桥梁:

from("jetty:http://0.0.0.0:8080/{procedure}")
    .to("sql-stored:${header.procedure}()");

哪个给出了错误

org.apache.camel.component.sql.stored.template.generated.ParseException: Encountered " <SIMPLE_EXP_TOKEN> "${header.procedure} "" at line 1, column 1.
Was expecting:
    <IDENTIFIER> ... 
    at org.apache.camel.component.sql.stored.template.generated.SSPTParser.generateParseException(SSPTParser.java:370)
    at org.apache.camel.component.sql.stored.template.generated.SSPTParser.jj_consume_token(SSPTParser.java:308)
    at org.apache.camel.component.sql.stored.template.generated.SSPTParser.parse(SSPTParser.java:27)
    at org.apache.camel.component.sql.stored.template.TemplateParser.parseTemplate(TemplateParser.java:41)
    ... 38 more

我在很多地方看到sql-stored中使用标头变量的示例,但总是绑定变量时。如何动态设置存储过程的名称?

1 个答案:

答案 0 :(得分:1)

您正尝试将邮件发送到动态端点。目标uri将取决于$ {header.procedure}内容。

从Camel 2.16起,您可以使用&#34; toD&#34;告诉Camel您的目标端点是动态的。

此处有更多信息http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.htmlhttp://camel.apache.org/message-endpoint.html