2016-07-21 9 views
0

Я поставил вместе не до-успешный в Mule 3.7 (см):Mule до успешного повторить только с тайм-аутом

<until-successful maxRetries="100" failureExpression="#[exception != null &amp;&amp; (exception.causedBy(java.net.ConnectException) || exception.causedBy(java.net.SocketTimeoutException)) || message.inboundProperties['http.status'] != 500]" synchronous="true" millisBetweenRetries="20000" doc:name="UntilSuccess"> 

<processor-chain> 

    <set-payload value="#[flowVars.operationPayLoad]" doc:name="GetTransactionRequest" /> 

    <ws:consumer config-ref="GetTransactionWSConsumerConfig" operation="execute" doc:name="GetTransaction" /> 
</processor-chain> 

Я заинтересована только в создании до успешного повторных попыток если веб-служба не работает или время истекает. Никакое другое исключение не должно быть повторено до тех пор, пока оно не будет успешным.

Тем не менее, я проверил, где я получаю org.muleule.ws.consumer.SoapFaultException, но до тех пор, пока не удастся, продолжает пытаться вызвать веб-службу.

Как сообщить до тех пор, пока не удастся игнорировать все исключения и остановить повторную попытку, за исключением случаев, когда веб-служба отключена или отключена?

Приветствия

Max

ответ

1

Что такое значение message.inboundProperties['http.status'] в тесте?

Кроме того, попробуйте положить скобка -

#[(exception != null && (exception.causedBy(java.net.ConnectException) || exception.causedBy(java.net.SocketTimeoutException))) || message.inboundProperties['http.status'] != 500]

т.е. (если есть исключение любого из этих двух типов) или статуса 500. [Добавлена ​​внешняя скобка для проверки исключений]

+0

http: – max

+0

Спасибо Маник. Статус http - 500. Однако до тех пор, пока он не будет успешным, он пытается попробовать. Может быть, я не понимаю функцию failExpression. Я также попробовал || message.inboundProperties ['http.status'] == 503], но снова он продолжает повторять попытку. – max

+0

Вы пробовали с круглыми скобками? Выражение Failure должно возвращать значение true, пока оно не будет успешно повторено. Попытайтесь построить свое условие по одному за раз и посмотреть, какой из них позволяет исключить ваше исключение. –

2

Как указано в документации MuleSoft, область «До успешной» будет повторять попытку, если обнаружено исключение или выражение ошибки истинно. Выражение отказа не отменяет поведение по умолчанию.