Мул 4 - до успешного завершения - увеличивайте время ожидания для каждой итерации - PullRequest
0 голосов
/ 10 июля 2020

В моем приложении я выполняю HTTP-вызов для чтения данных из внешней системы. Я хотел повторять трассы до 3 раз с интервалом, пока не получу ответ об успехе. Для этого я использую компонент Mule. ниже приведен код.

<until-successful maxRetries="3" millisBetweenRetries="10000">
   <http:request method="GET"></http:request>
</until-successful>

Этот код создает 3 следа с интервалом в 10 секунд.

Однако я хотел увеличить время ожидания для каждой итерации. т.е. я хочу, чтобы компонент ждал 10 секунд на первой итерации, 20 секунд на второй и 30 секунд на третьей.

Есть ли какой-либо вариант сделать это с компонентом. Пожалуйста, предложите. Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Это можно сделать, вложив <until-successful> осциллографы с разными задержками. Не самый элегантный, но, по крайней мере, использует готовые компоненты!

<flow name="pavanFlow">
    <http:listener doc:name="go" config-ref="HTTP_Listener_config" path="go"/>
    <until-successful maxRetries="1" doc:name="Third Retry" millisBetweenRetries="30000">
        <until-successful maxRetries="1" doc:name="Second Retry" millisBetweenRetries="20000">
            <until-successful maxRetries="1" doc:name="First Retry" millisBetweenRetries="10000">
                <flow-ref doc:name="attemptFlow" name="attemptFlow" />
            </until-successful>
        </until-successful>
    </until-successful>
</flow>
<flow name="attemptFlow">
    <logger level="INFO" doc:name="Trying" message="Trying"/>
    <raise-error doc:name="SOMEFAILURE" type="X:SOMEFAILURE"/>
</flow>
0 голосов
/ 10 июля 2020

Я не думаю, что есть способ сделать это из коробки. Время ожидания может быть выражением, но я не думаю, что вы можете изменять значения на каждой итерации.

...