直到成功进行同步重试的子均未捕获重试计数

时间:2019-06-12 06:35:19

标签: mule

需要成功进行同步重试的帮助。 我想跟踪重试次数。 对于异步调用,有一个名为process.attempt.count的变量,但对于同步调用,此变量不起作用。 即使我使用变量来增加会话中的计数,它也会默认返回到直到成功为止的开始位置。 非常感谢您的帮助。

我尝试将计数器增加到成功为止,但是由于直到成功之前m子中都没有变量传播,所以变量默认为原始值

<until-successful failureExpression="#[sessionVars['code'] != 0]" maxRetries="6" secondsBetweenRetries="2" synchronous="true">
    <flow-ref name="Enquiryflow" />
</until-successful>

<sub-flow name="Enquiryflow">
      <choice doc:name="Choice">
        <when expression="#[sessionVars['retryCount']=='0']">
            <set-session-variable variableName="retryCount" value="#[sessionVars.retryCount + 1]"/>
            <flow-ref name="postRequestToXYS" />
            <flow-ref name="mapResponseTemplate" />
        </when>         
        <otherwise>            
            <flow-ref name="postRequestToABC" />
            <flow-ref name="mapResponseTemplate" />
        </otherwise>
      </choice>        
   </sub-flow>

1 个答案:

答案 0 :(得分:0)

找到一种增加计数器的方法。 穆勒表示,直到成功的重试机制,变量都不会传播。 这适用于会话变量和变量。 但是,我们有一个称为注册表变量的选项。令我惊讶的是,尽管有例外,但保留了递增计数。

请关注此博客,了解如何在m子中使用注册表。 Mule ESB How to implement a counter variable to count how much times a flow is called