Как выполнить арифметическую операцию в атрибуте частоты опроса Mule?

Я сохраняю частоту опроса в файле свойств в секундах. Но атрибут частоты компонента «опрос» в Mule ожидает, что частота будет в миллисекундах. Как я могу выполнить операцию умножения здесь? Следующие два, похоже, не работают:

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

Заранее спасибо!


person Pranav Pal    schedule 04.01.2013    source источник
comment
Жизнеспособным обходным путем было бы вместо этого хранить частоту опроса в миллисекундах?   -  person Anders R. Bystrup    schedule 04.01.2013
comment
Да, это была первая мысль. Но почему-то я не могу контролировать, как сохраняется частота опроса.   -  person Pranav Pal    schedule 04.01.2013
comment
Не могли бы вы показать, как вы загружаете файл свойств?   -  person David Dossot    schedule 04.01.2013
comment
Я бы не смог показать код здесь, но я как-то умудряюсь хранить частоту в миллисекундах в файле свойств. Дело в том, что я хочу преобразовать секунды в миллисекунды в самом файле потока Mule, если это возможно.   -  person Pranav Pal    schedule 05.01.2013
comment
Забыл упомянуть в исходном сообщении: я использую Mule 3.2, поэтому не могу использовать MEL.   -  person Pranav Pal    schedule 07.01.2013
comment
Спрашивая по-другому: вы используете Spring для загрузки файла свойств или Mule?   -  person David Dossot    schedule 08.01.2013
comment
Я использую Spring для загрузки файла свойств   -  person Pranav Pal    schedule 08.01.2013


Ответы (1)


Мне жаль, что Mule не поддерживает SpEL в атрибуте frequency, поэтому мне пришлось создать ужасное приспособление, показанное ниже, чтобы реализовать ваше требование, используя только элементы конфигурации.

Вы также можете создать собственный класс для разбора начального bean-компонента properties вместо использования 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}">
person David Dossot    schedule 09.01.2013
comment
много ли других атрибутов, которые не поддерживают SpEL? Я не уверен, что понимаю, почему Mule не поддерживает его там - person Nikos; 04.10.2013
comment
Это ошибка, и я не знаю, сколько еще таких. - person David Dossot; 04.10.2013
comment
должно быть, даже это нельзя сделать: ‹jdbc-ee:inbound-endpoint queryTimeout=-1 pollingFrequency=#[60*60*1000] - person Nikos; 04.10.2013
comment
Это не СпЭЛ, а МЭЛ. MEL редко, если вообще когда-либо, оценивается во входящих конечных точках. Попробуйте с SpEL. - person David Dossot; 04.10.2013
comment
хм, не повезло #[spel:2*1000] NumberFormatException: - person Nikos; 04.10.2013
comment
Никогда не видел этот синтаксис. SpEL обычно находится в пределах #{ }. - person David Dossot; 04.10.2013
comment
#{} в моем случае не допускается :( - person Nikos; 04.10.2013
comment
Ошибка тогда. JIRA и поделитесь здесь номером JIRA, пожалуйста. - person David Dossot; 04.10.2013