Concurrency 具有重用和并发性的子流

Concurrency 具有重用和并发性的子流,concurrency,mule,reusability,flow,Concurrency,Mule,Reusability,Flow,我正在为我的一个USCASE准备解决方案。 我的解决方案在抽象上可能是这样的 我这里的问题是,当两个主流当前调用相同的子流时, 它能正常工作吗 我还需要为所有用作线程的类编写线程安全的代码吗 子流中的自定义组件/转换器 我的抽象配置如下所示 <flow name="mainflow_1" > <inbound-endpoint/> <transformer ....> <component ....> <

我正在为我的一个USCASE准备解决方案。 我的解决方案在抽象上可能是这样的

我这里的问题是,当两个主流当前调用相同的子流时, 它能正常工作吗

我还需要为所有用作线程的类编写线程安全的代码吗 子流中的自定义组件/转换器

我的抽象配置如下所示

<flow name="mainflow_1" >
    <inbound-endpoint/>
    <transformer ....>
    <component ....>
        <flow-ref name="subflow_1"></flow-ref>
    <transformer ....>
    <component  ...>
    <outbound-endpoint ....>
</flow>

<flow name="mainflow_2" >
    <inbound-endpoint  type="request-response" />
    <transformer ....>
    <component ....>
        <flow-ref name="subflow_1"></flow-ref>
    <transformer ....>
    <component  ...>            
</flow>

<sub-flow name="subflow_1" >        
    <transformer ....>
    <component ....>
        <outbound-endpoint  call to some service >
    <transformer ....>
    <component  ...>        
</sub-flow>


请指导我。

子流的行为类似于宏:从执行角度看,就好像子流的元素被复制到调用流中一样

因此,调用流的线程行为将决定子流的线程行为

无论它们是在子流中使用还是在主流中使用,如果您使用组件类的单实例(常见用例),那么您应该将组件类编写为线程安全的。如果使用原型实例(每个请求创建一个实例)或池实例(实例数量有限,线程瓶颈),则组件类可能是线程不安全的


根据经验,尽可能多地争取线程安全的无状态组件类,以避免将来的潜在优化痛苦。

子流的行为类似于宏:从执行角度看,就好像子流的元素被复制到调用流中一样

因此,调用流的线程行为将决定子流的线程行为

无论它们是在子流中使用还是在主流中使用,如果您使用组件类的单实例(常见用例),那么您应该将组件类编写为线程安全的。如果使用原型实例(每个请求创建一个实例)或池实例(实例数量有限,线程瓶颈),则组件类可能是线程不安全的

根据经验,尽可能多地争取线程安全的无状态组件类,以避免将来的潜在优化痛苦