【问题标题】:Mule until-successful syncronous retry does not capture the retry countMule until-successful 同步重试不捕获重试计数
【发布时间】:2019-06-13 16:02:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: mule


    【解决方案1】:

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

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

    【讨论】:

    • 没有注册表变量之类的东西。您实际上是在使用注册表来存储值。这对并发访问是不安全的,因为它会导致意外的结果,并且可能是一种不好的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2020-12-16
    • 2020-12-08
    相关资源
    最近更新 更多