Mule until-successful 仅在超时时重试
Mule until-successful to retry only with timeout
我在 Mule 3.7 中整理了一个直到成功(见下文):
<until-successful maxRetries="100" failureExpression="#[exception != null && (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 服务关闭或超时时进行直到成功重试感兴趣。 until-successful 不应重试其他异常。
但是,我做了一个测试,我得到了一个 org.mule.module.ws.consumer.SoapFaultException,但是直到成功一直在尝试调用网络服务。
我如何告诉 until-successful 忽略所有异常并停止重试,除非 Web 服务关闭或超时?
干杯
最大
在你的测试中 message.inboundProperties['http.status']
的值是多少?
此外,尝试放入括号 -
#[(exception != null && (exception.causedBy(java.net.ConnectException) || exception.causedBy(java.net.SocketTimeoutException))) || message.inboundProperties['http.status'] != 500]
即(当这两种类型中的任何一种出现异常时)或状态为 500。[在异常检查中添加了外括号]
正如 MuleSoft 文档中指定的那样,如果发现异常或失败表达式为真,Until Successful 范围将重试。失败表达式不会覆盖默认行为。
我在 Mule 3.7 中整理了一个直到成功(见下文):
<until-successful maxRetries="100" failureExpression="#[exception != null && (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 服务关闭或超时时进行直到成功重试感兴趣。 until-successful 不应重试其他异常。
但是,我做了一个测试,我得到了一个 org.mule.module.ws.consumer.SoapFaultException,但是直到成功一直在尝试调用网络服务。
我如何告诉 until-successful 忽略所有异常并停止重试,除非 Web 服务关闭或超时?
干杯
最大
在你的测试中 message.inboundProperties['http.status']
的值是多少?
此外,尝试放入括号 -
#[(exception != null && (exception.causedBy(java.net.ConnectException) || exception.causedBy(java.net.SocketTimeoutException))) || message.inboundProperties['http.status'] != 500]
即(当这两种类型中的任何一种出现异常时)或状态为 500。[在异常检查中添加了外括号]
正如 MuleSoft 文档中指定的那样,如果发现异常或失败表达式为真,Until Successful 范围将重试。失败表达式不会覆盖默认行为。