Mule Exhausted Action RUN vs WAIT。选择哪一个以及何时选择

时间:2014-10-14 15:53:48

标签: multithreading mule

我对Mule线程配置文件Exhausted_Action有疑问。从文档中我了解到,当操作是WAIT时,maxActive之外的任何新请求都将等待线程可用。而RUN的动作,会导致使用原始线程来处理请求。根据我的理解,我认为WAIT是更好的方式,而不是运行。但是,看起来MULE的所有默认值都设置为RUN。只是想听听我对这两个行为之间的理解和差异的评论,以及如何确定何时使用哪一个。

1 个答案:

答案 0 :(得分:4)

您对WAIT和RUN的承诺是正确的。

所有默认值都是RUN的原因是,由于流线程不可用,因此不会停止消息处理。因为原始线程(或接收器线程)无论如何都在等待Flow线程接收消息和进程,为什么不处理它。 (这是我的意见)。

但是使用RUN有一个缺点。

前:

 No of receiver threads are restricted to 2.
 <asynchronous=processing-strategy name="customAsynchronous" maxThreads="1" />
 <flow name="sample" processingStrategy="customAsynchronous" >
    <file:inbound-endpoint ......>
    ............
    ..........
 </flow>

文件大小:1MB,50MB,100MB,1MB,5MB。

在上述流程中有5个文件进入.3个文件被处理,因为有1个可用的流程线程和2个文件接收器线程(Exhausted_Action = RUN)。当第一个文件很小并且一直等待下一条消息时,流程线程将快速完成处理。不幸的是,接收器线程的工作是选择下一个文件并将其交给Flow线程来处理BIG文件。这样,当流线程正在等待时,接收器线程有可能在耗时的处理中受到攻击。

所以它始终取决于您正在处理的用例。

希望这有帮助。