我正在尝试在我的流程方法中设置一些属性,但我无法弄清楚如何在xml中使用这些属性,就像我可以使用语法在$ xml中轻松使用头文件:$ {in。 header.myKey}
这是我的代码:
<route>
<from uri="activemq:queue:start.queue" />
<to uri="stream:out" />
<process ref="jsonProcessor"></process>
<to uri="bean:validateInputIdentifiers?method=validation(${in.property.SourceMap}, ${in.property.DestinationMap})" />
</route>
这里in.property.SourceMap是未知函数。什么是正确的方法? 如果它类似于标题会很棒。此外,我想只使用属性而不是标题,因为标题的值可能不会在我的路径中保留。
这是流程方法代码:
@Override
public void process(Exchange exchange) throws Exception {
List<Map<String, String>> body = exchange.getIn().getBody(List.class);
Map<String, String> sourceMap = body.get(0);
Map<String, String> destinationMap = body.get(1);
exchange.setProperty("SourceMap", sourceMap);
exchange.setProperty("DestinationMap", destinationMap);
}
请提供解决方案。
答案 0 :(得分:6)
您的问题可能有多种解决方案组合。
示例属性键和值。
<cm:property name="app.user" value="PROD008"/>
如果你想用属性值设置标题,请在路由中。使用下面的代码段。
<setHeader headerName="password">
<simple>${properties:app.user}</simple>
</setHeader>
如果您想使用属性,可以使用以下代码段。
<to uri="{{some.endpoint}}"/>
对于您的示例:如果Properties是SourceMap和DestinationMap,您可以使用以下任何一种。
1. <to uri="bean:validateInputIdentifiers?method=validation(${property.SourceMap}, ${property.DestinationMap})" />
2. <to uri="bean:validateInputIdentifiers?method=validation({{SourceMap}},{{DestinationMap}})" />
如果您想使用标题而不是属性,请使用下面的代码段。
<to uri="bean:validateInputIdentifiers?method=validation(${header.SourceMap}, ${header.DestinationMap})" />
答案 1 :(得分:2)
在点击和试用后,我得到了工作解决方案:
<route>
<from uri="activemq:queue:start.queue" />
<to uri="stream:out" />
<process ref="jsonProcessor"></process>
<to uri="bean:validateInputIdentifiers?method=validation(${property.SourceMap}, ${property.DestinationMap})" />
</route>