關於騾子3.3 CE:如何禁用異步的ReplyTo「單向」交流模式
即使我有一個異步的「單向」交流模式就回復兩次給呼叫者與之前的「空」的消息我的真實迴應。所以我得到三個答覆。前兩個只是空的「垃圾」,然後我得到我的真實迴應。
我可以禁用前兩個「空」響應,只是讓我的真實迴應回到我應該回復的地方。調用者爲我的流程中的響應設置一個TEMP隊列。 (現在它在該響應隊列中得到三個響應)。
我們是否需要更改ActiveMQ中的行爲?這是目前的默認設置。
<jms:activemq-connector name="Active_MQ_Staging" brokerURL="tcp://xxx.xxx.xxx.x:yyyy" validateConnections="true" maxRedelivery="2" doc:name="Active MQ" forceJndiDestinations="true" honorQosHeaders="true" specification="1.1" disableTemporaryReplyToDestinations="true"/>
<flow name="MyFlow2" doc:name="MyFlow2">
<jms:inbound-endpoint queue="myQueue" connector-ref="Active_MQ_Staging" doc:name="JMS" exchange-pattern="one-way"/>
<all doc:name="All">
<processor-chain>
<jms:outbound-endpoint queue="${queue.mule.levinforequest}" disableTemporaryReplyToDestinations="true" connector-ref="Active_MQ_Staging" doc:name="JMS"/>
</processor-chain>
<processor-chain>
<logger message="Leaving AppFacade" level="INFO" doc:name="Logger"/>
</processor-chain>
</all>
....
編輯: 好吧,我沒有發表在上面的聲明。
這就是我們想要做的: Mule-app會收到一條JMS消息。發送者(如果我是正確的話,它是一個無狀態的EJB MDB)將設置一些我需要隨身攜帶的屬性,我將添加更多屬性。發件人給我一個響應的臨時隊列設置的名稱(其他流程中的mule-app將在幾個其他步驟和其他集成之後響應)。這第一次騾流是我設置爲「單向」,因爲我不希望它做出迴應。
該第一個流程將消息放在另一個JMS隊列中。然後,另一個Mule-app(和muleflow)接收消息(單向),並將其轉換爲另一種格式,並將其放在另一個隊列中。也許這對你沒有意義,但在我們的環境中它確實有意義。 ;-)然後在收到來自「第三方」的響應之後第二個Mule-app收到響應並將JMS消息轉換爲我們自己的格式(我們仍然有我們的屬性)。現在把它發送到第一個Mule-app(和第二流)(或任何其他人)可以得到消息的主題。不,我們想回應來電者。我們有誰發送請求的屬性以及他希望響應的隊列。因此,所有4個mule-flows(在2個不同的mule-apps中)都設置爲「單向」,因爲我們希望它是異步的,而不是直接響應,因爲在路上有幾個步驟(和隊列)。
所以我們有實際的流程從流程1到流程3到外部方,然後在流程4中獲得響應,然後回到流程2給調用者。
所以Flow1-> Flow3-> Flow4->中級課程
騾-APP1:
初級流瑜伽: 呼叫者 - >隊列 - > MuleFlow(單程) - >隊列
中級課程: 主題 - > MuleFlow(單程) - >效應初探到Temp-隊列
騾-App2的
FLOW3: 隊列 - > Muleflow(單程) - >變換 - >隊列 - >外部部分
Flow4: 外部部分 - > Queue-> MuleFlow(單程) - >變換 - >主題
我希望你能關注我。
我想騾子工作室已經把那些「處理器鏈」放在那裏。記錄只是「記錄」。我想知道什麼時候離開Flow1等等。只是爲了記錄/調試。
謝謝你在這件事上的考慮。
/Z
我已經覆蓋了JMSReplyTo屬性並刪除了對臨時隊列的響應之一。 –
ZiggyStardust
「調用者爲我的流的響應設置了一個TEMP隊列。」 < - 你能把它關掉嗎? –
讓我再添加一些細節。我將在上面編輯我的帖子。 – ZiggyStardust