Mule ESB如何实现计数器变量来计算流的调用次数

时间:2018-04-24 03:37:11

标签: mule mule-component mule-esb

我担心如何实现一个计数器,当调用flow时它将增加1步。例如: 我有一个名为http://localhost:8080/doSomething的流和一个变量计数器。 当我在doSomething服务中输入

时,计数器变量将增加1

非常感谢

5 个答案:

答案 0 :(得分:0)

您需要持久存储解决方案。 Mule中的变量并不存在于调用中。 Mule有一个Object Stores的概念:https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-object-stores

如果您是Mule Enterprise客户,则可能会在您的订阅中包含分析。

答案 1 :(得分:0)

如果需要存储整个应用程序中可用的运行时数据,则可以将数据作为对象存储在注册表中。 这是一个例子

设置值

<scripting:component doc:name="Groovy">
             <scripting:script engine="Groovy">                
                <![CDATA[muleContext.getRegistry().registerObject("Count", new Integer(14))]]>
              </scripting:script>
</scripting:component>

读取值

<logger message="Count #[app.registry.get('Count')]" level="INFO" doc:name="Logger"/>

答案 2 :(得分:0)

如果您只是想收集统计信息,那么我建议您考虑使用MuleSoft Insight。您可以在流程中设置自定义商务活动并跟踪重要信息。最后,您可以使用CloudHub上的 Insight Dashboard ,通过应用各种过滤器来获取相应的统计信息。

答案 3 :(得分:0)

您可以在流程中拥有对象存储,它可以在内存或持久存储中存储您的计数器(流量的点击次数)。然后,您可以检索计数器并在随后点击流量时增加计数器。 https://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-module-reference

答案 4 :(得分:0)

在流的开头,在Mule应用程序注册表中初始化一个整数值为1的变量,如下所示:

<expression-component doc:name="Expression"><![CDATA[#[app.registry.put('counter',1)]]]></expression-component>

要增加值,请使用:

<expression-component doc:name="Expression"><![CDATA[#[app.registry.put('counter',app.registry['counter']+1)]]]></expression-component>

要获取计数器标志的最终值,请使用表达式:

#[app.registry.get('counter')]