0

コンポーネント内から JMS キューからメッセージを読み取る必要がある場所があります。

ただし、このプロセス中に、メッセージに関連付けられたセッション変数が失われます。
ただし、セッション変数は、同じメッセージがコンポーネント内からではなく JMS:inbound-endpoint から読み取られる場合に使用できます。

これが私のサンプルフローです。

メイン フローはセッション変数を MuleMessage に設定し、それを JMS:outbound-endpoint にポストします。

<flow name="main-flow" >
    <some  inbound>
    ...
    < Some processing >
    <set-session-variable .... />
    ...
    <jms:outbound-endpoint  queue="myQueue1">
</flow>

メッセージが JMS:inbound-endpoint から読み取られると、メッセージ内にセッション変数が表示されます。

<flow name="second-flow" >
    <jms:inbound-endpoint queue="myQueue1" />

    <logger level="INFO" />
    ...
    <  some processing />   
</flow>

ただし、JMS:queue をポーリングするコンポーネントからメッセージが読み取られると、セッション変数が欠落します。

<flow name="third-flow" >
    <quartz:inbound-endpoint  repeat-interval="5 mins" />
    ....
    <component>
        <spring-object bean="MyComponent"/>
    </component>
    ....
</flow>

MyComponent クラスの onCall メソッドには、JMS キューから読み取る次のコードがあります。

    String reqURL = "jms://" + queueName ;
    muleMessage = eventContext.requestEvent(reqURL, 1000);

ただし、セッション変数は Mule メッセージにはありません。

4

0 に答える 0