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