我有一个Mule流正在侦听复合源中的两个文件位置。有没有办法可以限制我的流量,一次只处理一个文件,如果两个文件同时放在这些位置?
基本上,我希望我的应用程序工作的方式是同时删除两个文件,Mule选择一个,处理它,仅当流程完成开始处理下一个文件。提前谢谢。
答案 0 :(得分:1)
了解处理策略:http://www.mulesoft.org/documentation/display/current/Flow+Processing+Strategies
它允许您设置线程数以限制流量。
<queued-asynchronous-processing-strategy name="allow1Threads" maxThreads="1" poolExhaustedAction="WAIT"/>
<flow name="testFlow" processingStrategy="allow1Threads">
<file:inbound... />
<flow-ref name="processFile" />
</flow>
<flow name="processFile" processingStrategy="synchronous">
<!-- Synchronous processing here -->
</flow>
更新:根据评论,我更新了示例。这将允许您将主流量限制为1个线程并将其传递给&#34; processFile&#34;它会同步运行。
即使主流是异步的(对于文件入站端点是默认的,因为它是单向交换模式,除非你已经覆盖了processingStrategy或exchange-pattern),流组件仍然按顺序同步运行, EXCEPT 用于将流引用到私有流,它们会自动获取调用流处理策略。
答案 1 :(得分:0)
请尝试以下方式进行操作。
<flow name="fileFlow" processingStrategy="synchronous">
<file:inbound... />
<remaining Flow>
......
</flow>
这种方式总是只有一个线程来挑选和处理文件。
希望这有帮助。