如何在 Camel 处理器中使用 属性 占位符
How to use property placeholder inside a Camel Processor
我正在用 camel 编写一些路由,我想使用处理器进行一些转换。我有一个属性文件,它工作正常。
from(URI_LOG)
.routeId("{{PREFIX_LOG}}.prepareForMQ")
.log("Mail to: {{MAIL}}") //The value is read from a property file
.process(new ProcessorPrepareMail())
.log("${body}");
现在...我想在处理器中读取 {{MAIL}} 的值,但我不知道如何读取。
我试过这些东西:
public class ProcessorPrepareMail implements Processor
{
@Override
public void process(Exchange exchange) throws Exception
{
//Plan A: Does not work.... I get an empty String
String mail = exchange.getProperty("MAIL", String.class);
//Plan B: Does not work.... I get the String "{{MAIL}}"
Language simple = exchange.getContext().resolveLanguage("simple");
Expression expresion = simple.createExpression("{{MAIL}}");
String valor = expresion.evaluate(exchange, String.class);
//Plan C: Does not work. It activates the default error handler
Language simple = exchange.getContext().resolveLanguage("simple");
Expression expresion = simple.createExpression("${MAIL}");
String valor = expresion.evaluate(exchange, String.class);
}
}
你能帮帮我吗?
谢谢
CamelContext 上有 API 可以做到这一点:
String mail = exchange.getContext().resolvePropertyPlaceholders("{{MAIL}}");
我正在用 camel 编写一些路由,我想使用处理器进行一些转换。我有一个属性文件,它工作正常。
from(URI_LOG)
.routeId("{{PREFIX_LOG}}.prepareForMQ")
.log("Mail to: {{MAIL}}") //The value is read from a property file
.process(new ProcessorPrepareMail())
.log("${body}");
现在...我想在处理器中读取 {{MAIL}} 的值,但我不知道如何读取。
我试过这些东西:
public class ProcessorPrepareMail implements Processor
{
@Override
public void process(Exchange exchange) throws Exception
{
//Plan A: Does not work.... I get an empty String
String mail = exchange.getProperty("MAIL", String.class);
//Plan B: Does not work.... I get the String "{{MAIL}}"
Language simple = exchange.getContext().resolveLanguage("simple");
Expression expresion = simple.createExpression("{{MAIL}}");
String valor = expresion.evaluate(exchange, String.class);
//Plan C: Does not work. It activates the default error handler
Language simple = exchange.getContext().resolveLanguage("simple");
Expression expresion = simple.createExpression("${MAIL}");
String valor = expresion.evaluate(exchange, String.class);
}
}
你能帮帮我吗?
谢谢
CamelContext 上有 API 可以做到这一点:
String mail = exchange.getContext().resolvePropertyPlaceholders("{{MAIL}}");