【发布时间】:2015-01-21 21:12:30
【问题描述】:
我正在使用非常简单的流程,从第一个流程中,我从 AMQP 获取消息(确认模式:Manual)并通过 VM 将其传递给第二个流程,在我使用 AMQP 确认的第二个流程中处理器确认每条消息。
当我们使用 VM 时,传递标记和通道标记都被清除(这对于 AMQP 确认消息处理器是强制性的,如该 url AMQP acknowledgement mule 中所述)。所以我试图将deliver-tag和amqp.channel保存在会话变量中。
我第一次想知道,存储在会话变量中的 Channel 值在通过 VM 时会被删除,但可以看到传递标签。
观察:
- 如果我们使用
flow-ref,而不是VM。它工作正常。但就我而言,我只需要使用 VM。 -
amqp.delivery-tag
type(java.lang.long) amqp.channeltype(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>有没有人知道如何解决这个问题。
【问题讨论】:
标签: mule mule-studio mule-el mule-component