簡體   English   中英

通過Mule ESB中的VM端點時,會話變量被清除(使用AMQP)

[英]Session variable are wiped out when passing through VM endpoint in Mule ESB ( Uses AMQP)

我正在使用非常簡單的流程,從第一個流程開始,我從AMQP(Ack模式: Manual )接收消息並通過VM將其傳遞給第二個流程,在第二個流程中,我使用AMQP確認處理器來確認每條消息。

當我們使用VM時,兩個傳遞標記和通道標記都被清除(這對於AMQP確認消息處理器是強制性的,如本URL AMQP確認mule中所述 )。 所以我試圖在session變量中保存deliver-tag和amqp.channel。

我第一次想知道,存儲在會話變量中的Channel值在通過VM時會被刪除,但是能夠看到傳遞標簽。

觀察:

  1. 如果我們使用flow-ref而不是VM 它工作正常。 但就我而言,我只需要使用VM。
  2. amqp.delivery-tag type (java.lang.long)amqp.channel type (com.rabbitmq.client.impl.ChannelN)。

    如果'type'的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" ...

首先,因為假定模式是單向的,原始線程將結束,並且消息將被放入不同線程池的seda隊列中。

然后因為,當你在VM,Http等傳輸上放置一條消息時,流變量會丟失,而對象實例,即使你試圖將它們序列化並發送到另一台主機,它也沒有意義。主機,即:打開一個文件,嘗試以某種方式序列化描述符並將其發送到另一個主機,這是沒有意義的。

我的推薦是使用flow-ref而不是vm。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM