如何判断mule流消息处理是否正在进行中

时间:2014-10-08 21:04:06

标签: mule

我有一个要求,我需要确保骡子流一次只处理一条消息.Flow由石英调度程序触发,每次从FTP服务器读取一个文件

我建议的解决方案是保留一个全局变量" FLOW_STATUS"将被设置为" RUNNING"当收到一条消息并将其重置为" STOPPED"一旦消息处理完成。

任何输入到流的消息都将检查此变量并在" FLOW_STATUS"是" RUNNING"。

这个设置似乎有效,但我想知道是否有更好的方法来实现它。

围绕这个或任何内置的mule辅助函数是否有任何最佳实践来实现相同而不是依赖于全局变量

1 个答案:

答案 0 :(得分:1)

似乎更简单的解决方案是将流的maxActiveThreads设置为1.在Mule中,处理的每个消息都获得它自己的线程。因此,将maxActiveThreads设置为1可以有效地使您的流程单线程化。其他待处理请求将在接收器线程中等待。您需要确保您的接收器线程池足够大,以容纳所有潜在的等待线程。这可能意味着限制您的石英调度程序以允许时间处理文件,以便接收器线程池不会填满。有关线程池以及如何调整性能的更多信息,这里有一个很好的链接:http://www.mulesoft.org/documentation/display/current/Tuning+Performance