Mule Threading Profile的poolExhaustedAction - RUN

时间:2014-11-24 11:16:19

标签: multithreading mule

我已经完成了这个

我对RUN poolExhaustedAction。

感到困惑

如果poolExhaustedAction设置为RUN并且池中没有可用的线程,请求接收方线程是否会继续流?如果是这样,这是一个同步处理吗?

编辑:假设我有一个骡流配置,如:

  • 流程处理策略是异步的。
  • ReceiverFlowDispatcher的线程池大小为1。
  • 最后poolExhaustedActionReceiver的{​​{1}}为Dispatcher

    使用上面提到的配置,我的问题如下,想象一下Flow线程池已用完,来自Receiver池的(只有一个)线程收到来自客户端的新请求。这个接收器线程会继续流程处理还是等待?如果我理解正确,接收器线程不会等待,因为它的RUN设置为poolExhaustedAction。从接收器线程的角度来看,这不是一个同步处理吗?那么设置RUN处理策略有什么用?

现在我更改了上述配置,以便将asynchronous Dispatcher's设置为poolExhaustedAction。上面的接收者线程会等待调度程序线程吗?我不这么认为。

请澄清我的疑问。提前谢谢。

1 个答案:

答案 0 :(得分:2)

请参阅以下链接,其中我解释了WAIT和RUN poolExhaustedAction值。

Mule Exhausted Action RUN vs WAIT. Which one to choose and when

有关RUN的问题。

在异步处理streategy的情况下,是的。当流线程耗尽时,请求接收器线程继续处理请求。但这不是同步的。因为如果有4个接收器线程,则所有4个接收器线程可能会继续处理请求。他们都可能并行运行。

回答编辑的OP: 因为只有一个线程正在执行处理并不意味着同步。如前所述,Receiver线程仅在流线程池耗尽后才启动。意味着流程线程都忙于处理,在这种情况下,一个线程仍在处理,并且不能采取新的处理请求。所以接收器线程开始处理。所以这仍然不是同步的。

希望这能回答你的问题。