我正试图从属性文件中读取时间延迟。
已在我的属性文件中定义:
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>
camel不会抛出任何错误,但它似乎忽略$ {time_inMilis}并为我的延迟时间设置为0。
从属性文件中读取延迟常量的正确方法是什么?
答案 0 :(得分:2)
首先,仅使用 camel:propertyPlaceholder 而不是声明bean 属性就足够了。
第二个错误是您在尝试阅读 time_inMilis 属性值时使用的是Constant而不是Simple表达式。
第三,在试图获取你的财产价值时,你应该特别告诉Camel你正在寻找属性。
如果你的上下文定义了如下的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>