Sid*_*eva 2 spring apache-camel
我正在尝试在我的流程方法中设置一些属性,但我无法弄清楚如何在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>
Run Code Online (Sandbox Code Playgroud)
这里in.property.SourceMap是Unknown函数.什么是正确的方法?如果它类似于标题会很棒.此外,我想只使用属性而不是标题,因为标题的值可能不会在我的路由中保留.
这是流程方法代码:
@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);
}
Run Code Online (Sandbox Code Playgroud)
请提供解决方案.
您的问题可能有多种解决方案组合.
示例属性键和值.
<cm:property name="app.user" value="PROD008"/>
Run Code Online (Sandbox Code Playgroud)
在Route中,如果你想设置带有属性值的标题.使用下面的代码段.
<setHeader headerName="password">
<simple>${properties:app.user}</simple>
</setHeader>
Run Code Online (Sandbox Code Playgroud)
如果您想使用属性,可以使用下面的代码段.
<to uri="{{some.endpoint}}"/>
Run Code Online (Sandbox Code Playgroud)
对于您的示例:如果Properties是SourceMap和DestinationMap,您可以使用以下任何一个.
1. <to uri="bean:validateInputIdentifiers?method=validation(${property.SourceMap}, ${property.DestinationMap})" />
2. <to uri="bean:validateInputIdentifiers?method=validation({{SourceMap}},{{DestinationMap}})" />
Run Code Online (Sandbox Code Playgroud)
如果您想使用标题而不是属性,请使用下面的代码段.
<to uri="bean:validateInputIdentifiers?method=validation(${header.SourceMap}, ${header.DestinationMap})" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |