在验证器 uri 组件中使用时,camel 消息交换属性未得到解析

Bee*_*ela 3 validation apache-camel jbossfuse

我正在尝试使用蓝图 DSL 使用骆驼的验证器组件根据 xsd 验证 xml 文件。

<to id="validateXML" uri="validator:file:D:/data/schema/flow.xsd" /> --> working

<to id="validateXML" uri="validator:file:${property.flowXsdPath}" />  --> Not working
Run Code Online (Sandbox Code Playgroud)

flowXsdPath 是一个交换属性,设置为变量 xsdPathVar 定义的 xsd 位置,如下所示:

Exchange.setProperty("flowXsdPath", Exchange.getContext().resolvePropertyPlaceholders(xsdPathVar));

我收到异常“无法为端点创建生产者:Endpoint[validator://file:$%7Bproperty.flowXsdPath%7D]。原因:java.io.FileNotFoundException:${property.flowXsdPath}(系统找不到指定的文件)”

虽然我可以在验证 xml 文件之前访问日志消息中的属性值,如下所示

<log message="File ${file:name} XSD Location = ${property.flowXsdPath}" /> 

2017-10-16 11:48:44,037 | INFO  | processXMLFiles] | file-jms-hums-route              | ID-ITEM-XXXXX-49898-1508134722113-0-3 | File 20150603-161237-A412-MFSC.xml XSD Location = D:/data/schema/FSC.xsd
Run Code Online (Sandbox Code Playgroud)

您能否帮助我如何在验证器文件组件中访问此属性?

lts*_*las 5

您应该使用 Dynamic To <toD>而不是<to> 将消息发送到动态计算端点。

请参阅http://camel.apache.org/message-endpoint.html中的相关部分