2013-07-30 45 views
1

我已經使用ActiveMQ與JMS做了一個流程,我向隊列發送了一條消息,但由於任何原因,當我試圖從隊列中消費時,獲取消息並通過設置新的有效負載來更改它,它不會更改。我究竟做錯了什麼?爲什麼在使用Mule中的JMS隊列後我沒有獲得更改的有效內容?

基本上我想通過HTTP響應發回的改變有效載荷

這裏是我的代碼:

<jms:activemq-connector name="Active_MQ" 
      specification="1.1" 
      brokerURL="tcp://localhost:61616" 
      validateConnections="true" 
      doc:name="Active MQ"         
      persistentDelivery="true"    
      />  

<flow name="jmsFlow1" doc:name="jmsFlow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="jms" doc:name="HTTP"/> 
    <set-payload value="#['This is a message test']" doc:name="Set Payload"/> 
    <choice doc:name="Choice"> 
     <when expression="#[true]"> 
      <processor-chain> 
       <logger message="Im here!!" level="INFO" doc:name="Logger"/> 
       <jms:outbound-endpoint queue="StudioIN" connector-ref="Active_MQ" doc:name="JMS Queue Studio IN" exchange-pattern="request-response"/> 
      </processor-chain> 
     </when> 
    </choice> 
    <logger message="#[payload]" level="INFO" category="//// RETURNED FROM QUEUE PAYLOAD" doc:name="Logger"/> 
</flow> 

<flow name="fmsAdapterConsumerFlow1" doc:name="fmsAdapterConsumerFlow1"> 
    <jms:outbound-endpoint queue="StudioIN" connector-ref="Active_MQ" doc:name="JMS StudioIN Consumer" exchange-pattern="request-response"/> 
    <set-payload value="#[payload + ' returned from queue']" doc:name="Set Payload"/> 
</flow> 
+0

注:雖然它具有一個字符串的工作,更好地使用一個布爾值:'<當表達式=「#[真]」>' –

+0

@DavidDossot感謝大衛。 。更新的騾子XML,所以你可以看到,香港專業教育學院應用更改:(但不工作在這裏不知道爲什麼 – msqar

+0

您有一個複製/粘貼問題:「fmsAdapterConsumerFlow1」應該開始在入站端點不是一個出站端點:) –

回答

2

您不要在jms:outbound-endpointjms:inbound-endpoint指定exchange-pattern。因此Mule使用默認值,即one-way。因此,fmsAdapterConsumerFlow1中的有效負載改變不可能被回覆到jmsFlow1

在兩個JMS端點上設置exchange-pattern="request-response",並在連接器上設置disableTemporaryReplyToDestinations="false",否則您將永遠不會收到任何響應。

+0

感謝回覆。我有一個{NullPayload},怪異:o INFO 2013年7月30日17:03:50770 [[jmsptpexample] .connector.http.mule.default.receiver.02] ////傳回隊列中的載荷: {NullPayload} – msqar

+0

奇怪的是,它在3.3.0上對我很好。請注意,我不得不刪除''#隊列中返回的'[payload +']'否則我會收到'#[payload +'from queue']「,而不是」這是從隊列返回的消息測試「作爲HTTP響應。 –

+0

耶仍然得到nullpayload :( – msqar

1

上面提到的第二個流程是要改變的。 如果流程必須讀取消息並對其進行處理,則該流程始於入站端點。

<flow name="fmsAdapterConsumerFlow1" doc:name="fmsAdapterConsumerFlow1"> 
    <jms:inbound-endpoint queue="StudioIN" connector-ref="Active_MQ" doc:name="JMS StudioIN Consumer" exchange-pattern="request-response"/> 
    <set-payload value="#[payload + ' returned from queue']" doc:name="Set Payload"/> 
</flow> 

希望這有助於。

+0

也感謝您的幫助! – msqar

相關問題