如何在Mule轮询频率属性中进行算术运算?

时间:2013-01-04 07:52:45

标签: mule integer-arithmetic

我将轮询频率以秒为单位存储在属性文件中。但是Mule中“poll”组件的频率属性要求频率以毫秒为单位。我该如何在这里执行乘法运算?以下两个似乎不起作用:

(1) <poll frequency="${GiantsNew.poll*1000}">
(2) <poll frequency="${GiantsNew.poll}*1000">

提前致谢!

1 个答案:

答案 0 :(得分:2)

对不起,Mule不支持frequency属性中的SpEL,因此我必须构建下面显示的可怕装置,仅使用配置元素来实现您的要求。

你也可以创建一个自定义类来解析初始的properties bean,而不是像我在下面那样使用MethodInvokingFactoryBean

<spring:beans>
    <util:properties id="properties" location="classpath:appProperties.properties" />
    <spring:bean id="giantsNewProperty"
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
        p:targetObject-ref="properties" p:targetMethod="setProperty">
        <spring:property name="arguments">
            <spring:list>
                <spring:value>GiantsNewComputedPoll</spring:value>
                <spring:value>#{ T(java.lang.Integer).valueOf(properties.getProperty("GiantsNew.poll")) * 5 }</spring:value>
            </spring:list>
        </spring:property>
    </spring:bean>

    <spring:bean id="computedProperties" factory-bean="properties"
        factory-method="clone" depends-on="giantsNewProperty" />

    <context:property-placeholder
        properties-ref="computedProperties" />
</spring:beans>

...

<poll frequency="${GiantsNewComputedPoll}">