会话变量在通过Mule ESB中的VM端点时被清除(使用AMQP)

会话变量在通过Mule ESB中的VM端点时被清除(使用AMQP),mule,mule-studio,mule-el,mule-component,Mule,Mule Studio,Mule El,Mule Component,我使用非常简单的流程,从第一个流程开始,我从AMQP(确认模式:手动)获取消息,并通过VM将其传递给第二个流程,在第二个流程中,我使用AMQP确认处理器确认每条消息 当我们使用VM时,deliver标记和channel标记都会被删除(这对于AMQP确认消息处理器是必需的,如本url中所述)。因此,我试图在会话变量中保存deliver标记和amqp.channel 我第一次想知道,存储在会话变量中的通道值在通过VM时被擦除,但可以看到交付标签 观察: 而不是VM,如果我们使用flow ref。它很

我使用非常简单的流程,从第一个流程开始,我从AMQP(确认模式:
手动
)获取消息,并通过VM将其传递给第二个流程,在第二个流程中,我使用AMQP确认处理器确认每条消息

当我们使用VM时,deliver标记和channel标记都会被删除(这对于AMQP确认消息处理器是必需的,如本url中所述)。因此,我试图在会话变量中保存deliver标记和amqp.channel

我第一次想知道,存储在会话变量中的通道值在通过VM时被擦除,但可以看到交付标签

观察:

  • 而不是
    VM
    ,如果我们使用
    flow ref
    。它很好用。但在我的情况下,我只需要使用虚拟机
  • amqp.delivery-tag
    类型
    (java.lang.long) amqp.channel
    type
    (com.rabbitmq.client.impl.ChannelN)

    如果amqp.channel的“类型”导致问题。如果是,如何将此变量保存在会话中。请建议。请找到我的配置xml

     <flow name="testrabbitmqFlow1" doc:name="testrabbitmqFlow1" >
    <amqp:inbound-endpoint queueName="amqp.test.queue" exchangeDurable="true" queueDurable="true" responseTimeout="1000000"  connector-ref="AMQP_Test"  doc:name="AMQP">
    <amqp:transaction recoverStrategy="REQUEUE" action="ALWAYS_BEGIN"/>
    </amqp:inbound-endpoint>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <set-session-variable variableName="storedeliveryTag" value="#[flowVars['amqp.delivery-tag']]" doc:name="Session Variable"/>
    <set-session-variable variableName="storeChannel" value="#[flowVars['amqp.channel']]" doc:name="Session Variable"/>
    <vm:outbound-endpoint exchange-pattern="one-way" path="/test" doc:name="VM">
        <vm:transaction action="NONE"/>
    </vm:outbound-endpoint>
    
    
    

    有人知道如何解决这个问题吗

  • 这是行不通的

    <vm:outbound-endpoint exchange-pattern="one-way" ...