【问题标题】:Mule until-successful to retry only with timeout骡子直到成功重试只有超时
【发布时间】:2016-07-21 09:42:50
【问题描述】:

我在 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 服务关闭或超时时进行直到成功重试感兴趣。 until-successful 不应重试任何其他异常。

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

我如何告诉直到成功忽略所有异常并停止重试,除非 Web 服务关闭或超时?

干杯

最大

【问题讨论】:

    标签: web-services timeout mule esb timeoutexception


    【解决方案1】:

    如 MuleSoft 文档中所述,如果发现异常或失败表达式为真,直到成功范围将重试。失败表达式不会覆盖默认行为。

    【讨论】:

      【解决方案2】:

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

      另外,试着加上括号 -

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

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

      【讨论】:

      • http状态为
      • 谢谢马尼克。 http状态为500。但是,直到成功一直在尝试。也许我不明白 failureExpression 的功能。我也试过|| message.inboundProperties['http.status'] == 503] 但它再次不断重试。
      • 你试过括号吗?失败表达式必须返回真,直到成功重试。尝试一次建立一个条件,看看哪一个让你的异常消失。
      • 我试过
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多