我需要在哪里需要从组件内部读取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:队列的组件中读取消息时,缺少会话变量。
<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消息中没有会话变量。