我有一个要求,我需要从组件内部的 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 消息中。