我有一个blueprint.xml,我在其中为ESB编写了一些路由。 我想从传递到路由的XML文件中获取值。 我想使用这些值来组成动态属性键名称并调用属性文件并获取匹配属性(所有路径内)。由于每次实例化这一过程的开销,我想避免创建Java处理器。 基本上我想这样做:
<from uri="file:C:/myfilelocation?"/>
<to uri= {{<xpath>//company</xpath>+<xpath>//branch</xpath>}}/>
因此,在蓝图中,您使用{{}}调用属性 我试图将xpath值作为属性键放在属性{{}}标记内。在我的属性文件中,我有一个映射为每个公司/分支组合,如下所示:
company1branch1 = http://thiscompany.com company2branch2 = http://someothercompany.com
任何方法都可以这样做,例如某种逃脱角色?
答案 0 :(得分:0)
&lt;到&gt;对于静态uris,如果要使用动态运行时计算的uris,则应使用收件人列表EIP:http://camel.apache.org/recipient-list.html,它允许向在运行时计算的收件人发送消息。
此常见问题解答中也对此进行了描述:http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html
虽然使用xpath,但您需要先将它们设置为标头。 类似的东西:
<setHeader headerName="company">
<xpath resultType="java.lang.String">/xxxx</xpath>
</setHeader>
...
<recipientList><simple>{{${header.company}${header.branch}}}</simple></recipientList>
收件人列表也可以发送到2个以上的目的地,分隔符默认为逗号。但你可以配置它。请参阅上面的链接。