Mule 4 Async vs VM Scope,哪个更适合用于异步处理流?

问题描述

从我可以简要理解的内容来看,它们都使用更多资源与 VM 范围异步处理流程,因为它创建了新的上下文、单独的属性和变量。除了使用只是为了异步处理流程之外,还有什么特别的原因吗?

解决方法

Async 是一个作用域,如果有可用资源(即线程),它会立即与流并行执行。 VM 是实现内存中队列的连接器。我通常建议更喜欢使用 VM 连接器,因为使用 Async 如果没有可用线程,它可能无法执行。使用 VM 连接器,消息将被排队,直到从 VM 队列读取的流能够读取下一条消息。请注意,如果排队的消息数大于处理的消息数,它将耗尽内存或超过队列分配,从而导致另一个错误。

永远记住线程是一种有限的资源。在 Mule 中,无法控制使用的线程数,只能控制并发。还要记住,线程不是空闲的,它们会消耗内存和 CPU。