我有一个要求,我需要确保骡子流一次只处理一条消息.Flow由石英调度程序触发,每次从FTP服务器读取一个文件
我建议的解决方案是保留一个全局变量" FLOW_STATUS"将被设置为" RUNNING"当收到一条消息并将其重置为" STOPPED"一旦消息处理完成。
任何输入到流的消息都将检查此变量并在" FLOW_STATUS"是" RUNNING"。
这个设置似乎有效,但我想知道是否有更好的方法来实现它。
围绕这个或任何内置的mule辅助函数是否有任何最佳实践来实现相同而不是依赖于全局变量
答案 0 :(得分:1)
似乎更简单的解决方案是将流的maxActiveThreads设置为1.在Mule中,处理的每个消息都获得它自己的线程。因此,将maxActiveThreads设置为1可以有效地使您的流程单线程化。其他待处理请求将在接收器线程中等待。您需要确保您的接收器线程池足够大,以容纳所有潜在的等待线程。这可能意味着限制您的石英调度程序以允许时间处理文件,以便接收器线程池不会填满。有关线程池以及如何调整性能的更多信息,这里有一个很好的链接:http://www.mulesoft.org/documentation/display/current/Tuning+Performance