2014-10-20 117 views
1

我想從屬性文件中讀取時間延遲。從屬性文件讀駱駝常量

在我的屬性文件中定義:

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> 

駱駝不拋出任何錯誤,但它似乎忽略$ {time_inMilis }併爲我的延遲時間設置爲0。

什麼是從我的屬性文件中讀取延遲常量的正確方法?

回答

2

首先,只需使用即可:camel:propertyPlaceholder而不是聲明bean 屬性

第二個錯誤是,你嘗試閱讀time_inMilis屬性值時使用的Constant代替Simple表達。

第三,當試圖獲得你的財產價值時,你應該特別告訴駱駝你正在看財產。

如果上下文定義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> 

他們與Java DSL你就可以讀取textProeprty值這樣

from("file:src/data?noop=true") 
    .transform().simple("Text read from properties: ${properties:textProperty}") 
    .bean(new SomeBean()); 

從原來的使用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> 
+0

非常感謝!效果不錯 – lshaked 2014-10-20 14:52:43

+0

如果答案有用,請將其投票 – Seego 2014-10-21 08:08:18