Mule线程配置文件的poolExhaustedAction-RUN

拉姆·巴维雷迪(Ram Bavireddi)

我已经经历过了

我对RUNpoolExhaustedAction感到困惑

如果将poolExhaustedAction设置为,RUN并且池中没有可用线程,则请求接收器线程将继续执行流程吗?如果是这样,这是同步处理吗?

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

  • 流处理策略是异步的。
  • 线程池的大小ReceiverFlow并且Dispatcher是1。
  • 最后poolExhaustedActionReceiverDispatcherRUN

    使用上述配置,我的问题如下:想象Flow线程池已耗尽,并且来自Receiver池的(仅一个)线程接收到来自客户端的新请求。该接收器线程将继续执行流处理还是等待?如果我正确理解,则接收器线程不会等待,因为它poolExhaustedAction设置为RUN那么这不是从接收器线程的角度进行同步处理吗?那么设置asynchronous处理策略的用途是什么?

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

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

用户名

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

ule子疲惫的行动RUN vs WAIT。选择哪个以及何时

对于与RUN相关的问题。

对于异步处理策略,是的。当流线程耗尽时,请求接收器线程继续进行请求的处理。但这不是同步的。因为如果有4个接收器线程,则所有4个接收器线程可能会继续处理请求。而且它们都可能并行运行。

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

希望这能回答您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章