计算由Mule流处理的请求

时间:2014-02-11 18:20:28

标签: java spring mule

我正在使用Mule ESB 3.4。我想开发一个自定义Java组件,用于计算流接收的请求数。流动将例如是这样的:

http inbound-endpoint -> counter -> vm-outbound-endpoint

首先,包含计数器的实际变量应存储在内存中。然后它可能会被打印到日志中或插入到数据库中(现在这并不重要)。我所追求的是一个干净的设计,我可以在以后重新使用它来存储更​​复杂的应用程序全局状态(基于接收消息的数量和内容)并实现更复杂的逻辑。

2 个答案:

答案 0 :(得分:2)

解决这个问题的方法是将计数器变量创建为单例Spring bean(例如类java.util.concurrent.atomic.AtomicInteger),然后通过Spring再次将其注入自定义Mule组件。组件可以使用prototype-scope定义,并且每次Message遍历时都可以安全地运行类似counter.incrementAndGet()的内容。通过这种方式,计数器可以在任何时间保持通过流的消息数量。

由于Spring bean可以是您喜欢的任何POJO,因此您可以轻松扩展此设计以允许存储更复杂的状态。存储的对象当然要公开线程安全的操作。

答案 1 :(得分:0)

对于干净且分离的方法,您可以使用服务器通知: http://www.mulesoft.org/documentation/display/current/Mule+Server+Notifications

您只需要为可以作为Spring bean的端点消息添加侦听器并将值存储在那里。