Mule - 队列文件,以便任何时候只有一个文件通过流

时间:2014-03-27 11:18:48

标签: file queue mule mule-studio

我有一个Mule流正在侦听复合源中的两个文件位置。有没有办法可以限制我的流量,一次只处理一个文件,如果两个文件同时放在这些位置?

基本上,我希望我的应用程序工作的方式是同时删除两个文件,Mule选择一个,处理它,仅当流程完成开始处理下一个文件。提前谢谢。

2 个答案:

答案 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>

这种方式总是只有一个线程来挑选和处理文件。

希望这有帮助。