如何使用spring xml中的属性占位符使camel简单表达式工作

时间:2014-02-25 00:19:26

标签: spring properties expression apache-camel placeholder

我正在尝试在驼峰路线中使用属性占位符。 我有test.properties定义属性:MQ.queuename1 = TESTQUEUE。 在camel上下文中,我定义了占位符:

<camel:camelContext xmlns="http://camel.apache.org/schema/spring" >
  <propertyPlaceholder id="camel-properties"  location="file:${web.external.propdir}/test.properties"/>

在路线中,我使用简单的表达来评估属性:

<choice>
           <when>
                <simple>${in.header.queuename} == '{{MQ.queuename1}}'</simple>
            <bean ref="ExtractOrderContent" method="extractContent"/>
                <to uri="websphere-mq:queue:TESTQUEUE" pattern="InOnly"/>
            </when> 
        </choice>

当我运行camel时,属性文件被camel识别,但看起来简单的表达式不起作用。我什么都错过了?

2 个答案:

答案 0 :(得分:12)

您可以使用简单(http://camel.apache.org/simple

中的属性功能
<simple>${in.header.queuename} == ${properties:MQ.queuename1}</simple>

嵌套&lt; {{}}何时>可能是由于一个bug,已经在较新的Camel版本中得到修复。

答案 1 :(得分:2)

从您提供的路由配置中,您似乎错过了在标头中设置queuename。相反,您应该使用属性组件作为

<simple>${properties:queuename} == 'MQ.queuename1'</simple>