1

私は、uscases の 1 つのソリューションの準備に取り組んでいます。私の解決策は、抽象的にはこのように見えるかもしれません。

ここでの私の質問は、2 つのメイン フローが同じサブフローを同時に呼び出している場合、問題なく動作するのでしょうか?

また、サブフローでカスタム コンポーネント/trnasformers として使用されているすべてのクラスに対して、コードをスレッド セーフとして記述する必要がありますか?

私の抽象的な構成は以下のようになります。

<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>

私を案内してください。

4

1 に答える 1

5

サブフローはマクロのように機能します。実行に関しては、サブフローの要素が呼び出しフローにコピーされたかのようになります。

したがって、サブフローのスレッド動作を決定するのは、呼び出しフローのスレッド動作です。

それらがサブフローで使用されるかメイン フローで使用されるかに関係なく、それらのシングルトン インスタンスを使用する場合 (一般的なユース ケース) は、コンポーネント クラスをスレッド セーフになるように記述する必要があります。プロトタイプ インスタンス (リクエストごとに 1 つのインスタンスが作成される) またはプールされたインスタンス (インスタンスの数が限られている、スレッドのボトルネック) を使用する場合、コンポーネント クラスはスレッド セーフではない可能性があります。

経験則として、可能な限りスレッド セーフなステートレス コンポーネント クラスを使用して、将来の潜在的な最適化の問題を回避してください。

于 2013-01-18T17:02:41.940 に答える