Mule直到成功才重试超时

时间:2016-07-21 09:42:50

标签: web-services timeout mule esb timeoutexception

我已经在Mule 3.7(见下文)中成功地完成了一次成功:

<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>

我只对在Web服务中断或超时的情况下进行直到成功重试感兴趣。直到成功,才能重试其他例外。

但是,我做了一个测试,我得到了一个org.mule.module.ws.consumer.SoapFaultException,但是直到成功仍然试图调用Web服务。

除了Web服务停机或超时之外,如何告知成功之前忽略所有异常并停止重试?

干杯

最高

2 个答案:

答案 0 :(得分:2)

正如MuleSoft文档中所指定的,如果发现异常或失败表达式为true,则Until Successful范围将重试。失败表达式不会覆盖默认行为。

答案 1 :(得分:1)

测试中message.inboundProperties['http.status']的价值是多少?

另外,尝试加括号 -

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

即。 (当这两种类型中的任何一种都有例外)或状态为500时。[在异常检查中添加外括号]