コンポーネント内から 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 メッセージにはありません。