Apache camel 从属性文件读取Camel常量

Apache camel 从属性文件读取Camel常量,apache-camel,Apache Camel,我正在尝试从属性文件读取时间延迟 已在我的属性文件中定义: time_inMilis=15000 我已将骆驼上下文xml配置为: <bean id="property" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>file:/D

我正在尝试从属性文件读取时间延迟

已在我的属性文件中定义:

time_inMilis=15000
我已将骆驼上下文xml配置为:

    <bean id="property" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:/D:/Develop/resources/my.properties
            </value>
        </property>
    </bean>


    <camel:camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">   

     <propertyPlaceholder id="properties" location="file:/D:/Develop/resources/my.properties"/>

        <camel:route id="delayQueue">
            <camel:from uri="seda:queue1" />
            <delay asyncDelayed="true">
                <constant>${time_inMilis}</constant>
            </delay>
            <camel:to uri="seda:queue2" />
        </camel:route>

    </camel:camelContext>

文件:/D:/Develop/resources/my.properties
${time_inMilis}
camel不会抛出任何错误,但它似乎忽略了${time\u inMilis},并将延迟时间设置为0


从属性文件中读取延迟常数的正确方法是什么?

首先,使用camel:propertyPlaceholder而不是声明bean属性就足够了。

第二个错误是,在试图读取时间单位属性值时,使用了而不是表达式。

第三,当你们试图得到你们的财产的价值时,你们应该明确地告诉骆驼你们正在寻找财产

如果您的上下文定义propertiesPlaceholder如下:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <propertyPlaceholder id="props" location="classpath:/org/smp/eip/sample.properties"/>
    <package>org.apache.camel.example.spring</package>
</camelContext>
使用原始帖子中的Spring DSL,读取属性的正确方法是:

  <camel:route id="delayQueue">
        <camel:from uri="seda:queue1" />
        <delay asyncDelayed="true">
            <simple>${properties:time_inMilis}</simple>
        </delay>
        <camel:to uri="seda:queue2" />
    </camel:route>

${properties:time\u inMilis}
  <camel:route id="delayQueue">
        <camel:from uri="seda:queue1" />
        <delay asyncDelayed="true">
            <simple>${properties:time_inMilis}</simple>
        </delay>
        <camel:to uri="seda:queue2" />
    </camel:route>