【发布时间】:2018-10-04 04:55:27
【问题描述】:
我正在讨论如何实现一个计数器,该计数器在调用流程时将增加 1 步。例如: 我有一个名为:http://localhost:8080/doSomething 的流程和一个变量计数器。 当我在 doSomething 服务中按 enter 时,计数器变量将增加 1
非常感谢
【问题讨论】:
标签: mule mule-component mule-esb
我正在讨论如何实现一个计数器,该计数器在调用流程时将增加 1 步。例如: 我有一个名为:http://localhost:8080/doSomething 的流程和一个变量计数器。 当我在 doSomething 服务中按 enter 时,计数器变量将增加 1
非常感谢
【问题讨论】:
标签: mule mule-component mule-esb
您需要一个持久性存储解决方案。 Mule 中的变量不会跨越调用。 Mule 有 Object Stores 的概念:https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-object-stores
如果您是 Mule Enterprise 客户,您的订阅中可能包含分析。
【讨论】:
如果您需要存储跨应用程序可用的运行时数据,您可以将数据作为对象存储在注册表中。 这是一个例子
设置值
<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"/>
【讨论】:
如果你只是想收集统计数据,那么我建议你考虑使用MuleSoft Insight。您将能够在流程中设置自定义业务事件并跟踪重要信息。最后,您可以使用 CloudHub 上的 Insight Dashboard,通过应用各种过滤器来获取适当的统计信息。
【讨论】:
您可以在流程中拥有对象存储,该对象存储可以将您的计数器(对您的流程的点击次数)存储在内存或持久存储中。然后,您可以检索计数器并在后续命中您的流时增加它。 https://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-module-reference
【讨论】:
在流程开始时在 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')]
【讨论】: