2014-06-23 24 views
1

我有2個流,A.flow和B.flow,最終兩個流都執行相同的java類。mule中的不同流的同步

A & B從單獨的隊列中讀取。

我想同步流程,以便如果兩個流程同時獲得輸入,然後一個流程在一個時間進程,並且在完成之後,另一個流程將開始處理。

任何想法?

感謝

+0

當你說「流處理同一個Java類」你意味着消息的消息有效載荷包含相同的java對象(類實例),或者它使用相同的java對象實例作爲流中的處理器?也許你可以用一些示例流XML來澄清你的問題。 –

回答

2

使用一個共用的組件,並將其配置爲使用一個線程時間:

<flow name="A"> 
    <jms:inbound-endpoint...> 
    ... 
    <vm:outbound-endpoint path="process"/> 
    ... 
</flow> 

<flow name="B"> 
    <jms:inbound-endpoint...> 
    ... 
    <vm:outbound-endpoint path="process"/> 
    ... 
</flow> 

<flow name="process"> 
    <vm:inbound-endpoint path="process"/> 
    <pooled-component class="org.my.PrototypeObject"> 
     <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL" maxActive="1" maxIdle="1" maxWait="1000" /> </pooled-component> 
    </pooled-component> 
</flow> 

來源:http://www.mulesoft.org/documentation/display/current/Configuring+Java+Components#ConfiguringJavaComponents-ConfiguringaPooledJavaComponent

+0

該組件必須位於流A和B引用的第三個流(而非子流)中,對嗎? –

+0

@DavidDossot,你是對的,更新我的答案 –