2012-08-14 70 views
0

我想使用騾3.2.0 s收集聚合器。我嘗試過使用Mule Studio,但似乎仍然沒有在Mule studio中進行配置,雖然圖標確實出現在「流量控制」部分。 我的用例是 - 我從VM入站端點收到消息。我現在想把它傳遞給3個不同的流程 - 全部使用相同的請求對象,但執行不同的操作 - 說A,B,C。他們都更新了各自的數據庫,但它們都是共同的Order_ID(我們應用程序內部的一些)。 3個進程可能需要不同的處理時間,但一旦完成,每個進程都會返回相同的成功響應。我想要使​​用一個聚合器,它將聚合所有這些響應而不超時,然後將其轉發給Java組件或另一個VM端點以供進一步處理。 用於收集聚集騾子的文檔似乎並不十分翔實,所以如果有一個人誰使用收藏此Agg能幫助我的XML配置對於上述方案,將是非常有益的騾收集聚合器

回答

4

代替Collection Aggregator使用All消息處理器。它會將相同的消息發送給它內部的每個處理器,並在完成後彙總結果。

http://www.mulesoft.org/documentation/display/MULE3USER/Routing+Message+Processors#RoutingMessageProcessors-All

樣本配置:(我送 「福」 到VM端點)

<flow name="main" processingStrategy="asynchronous"> 
    <vm:inbound-endpoint path="in"/> 
    <all> 
     <flow-ref name="flow1"/> 
     <flow-ref name="flow2"/> 
    </all> 

    <logger message="#[payload:]" level="INFO"/> 
</flow> 

<flow name="flow1"> 
    <append-string-transformer message="bar1"/> 
</flow> 

<flow name="flow2"> 
    <append-string-transformer message="bar2"/> 
</flow> 

控制檯輸出:

INFO 2012-08-15 17:26:01,749 [main.stage1.02] org.mule.api.processor.LoggerMessageProcessor: [foobar1, foobar2] 

HTH

+0

謝謝丹尼爾。我想你是指上述鏈接中的這一位 - 「目標返回的所有消息(如果有的話)都聚合在一起並形成來自該處理器的響應。」然而,這並沒有真正以這種方式與ALL合作。我現在實際上正在使用ALL,它只是將消息轉發給所有人,並在他們各自的流程結束時消亡。如果我在ALL之後添加了另一個Java組件,只要消息已經傳遞到3個ALL目標,並且不真正等待來自3的響應,那麼您是否有示例配置?謝謝 – Soumya 2012-08-15 11:05:50

+0

這可能是因爲你從ALL調用A,B和C流程的方式是異步的(即「單向」)。 – 2012-08-15 15:25:45

+0

用示例配置更新了我的答案,它工作正常。你能提供你的流程配置的更多細節嗎? – Daniel 2012-08-15 20:35:47

0

我會去到使用ALL組件,您使用的端點應該是請求 - 響應(雙向的流量等待響應)。

因此ALL組件將聚集反應的然後返回你與來自流A,B和C這陣列列表中,可以以任何期望的方式使用定製變壓器通過在延伸AbstractTransformer變換所有的響應的的CopyOnWriteArrayList您的java類。

Cheers, Naveen Raj