2

メールを送信することを目的とした Mule アプリケーションがあります。アプリケーションは次の 2 つのステップを実行します。

1) 最初のフローでは、エンドポイントでリクエストを受け取り、それを vm キューに書き込みます。

2) 2 番目のフローでは、vm キュー内のメッセージが HTTPPost として webservice コンポーネントに送信され、email が送信されます。

そのため、mule_config.xml で「セッション」に対して何もしていません。したがって、知る限り、両方のフローが同じセッションの下にあります。

さて、同じセッションで複数のフローを持つことは良い習慣ですか、それともフローごとに異なるセッションを持つ必要がありますか (可能であれば)? 両方のフローが同じセッションで実行される上記のアプローチの長所と短所は何ですか。

4

1 に答える 1

4

最初に、Mule のセッションは Web コンテナのセッションとは異なり、複数のフローにまたがる特定のメッセージ プロパティ スコープにすぎないことに注意してください。

次の点を考慮してください。

<flow name="SessionDemo">
    <vm:inbound-endpoint path="test.in" />
    <set-session-variable variableName="mySessionVar"
        value="myValue" />
    <vm:outbound-endpoint path="next.in" />
</flow>
<flow name="SessionPropagationDemo">
    <vm:inbound-endpoint path="next.in" />
    <logger message="#[sessionVars.mySessionVar]"/>
</flow>

この例を実行すると、mySessionVarセッション スコープのメッセージ プロパティ (別名セッション変数) が VM キューを介して次のフローに伝播されていることがわかります。

複数のフロー間でメッセージ プロパティを運ぶ必要がある場合、セッション変数を使用すると作業が楽になります。それ以外の場合は、トランスポートを介して次のフローに「ホッピング」するたびに、インバウンド スコープからアウトバウンド スコープにプロパティを手動でコピーする必要があります (これは機能しません)。flow-ref「ホップ」には適用されません)。

于 2013-01-07T18:54:43.260 に答える