2013-03-18 254 views
0

我想使用ServiceMix/ActiveMQ/Camel集羣並行處理數據。看起來我可以通過首先分割數據,然後通過多個JMS消息和一個ActiveMQ經紀網絡來分發數據。並行數據處理結果彙總

雖然讓我感到困難的部分是我最終需要彙總所有節點的所有結果。我目前不確定如何做到這一點。所有結果最終都必須在一個節點上結束。

因此整體流程如下所示: (1)檢索數據。 (2)將它分成可管理的塊。 (3)通過ActiveMQ集羣將大塊數據組織到分佈式JMS隊列中。 (4)數據在所有節點上處理。

現在的一部分,我不知道如何處理:

(5)彙總後進行處理,從數據全部節點 (6)最後的加工步驟與彙總結果。

             > [Process data (node 1)] > 
[Retrieve DATA] >>>[vm://]>>> [SPLIT] >>>[activemq://]>>> [Process data (node 2)] >>>[activemq://]>>> [AGGREGATE] >>>[vm://]>>> [FINALIZE DATA] 
                 > [Process data (node 3)] > 

如何讓ActiveMQ代理網絡愉快地分配所有內容?僅在一個節點上部署最終聚合路由?不喜歡它,因爲這會創建一個SPOF ...

謝謝!

回答

1

好吧,聽起來你可以在聚合舞臺上使用exclusive consumer。您應該能夠在所有節點上運行該聚合路由。

聲明:我不知道這個解決方案的經紀人網絡。但你可以試試看,看看它是否有幫助。

+0

謝謝佩特,我會仔細看看! – torbengee 2013-03-19 17:40:03

1

此用例聽起來像由消息處理器EIP http://camel.apache.org/composed-message-processor.html

駱駝僅支持使用分離器聚集,這使得它更容易。請參閱上面的鏈接,瞭解有關分離器的信息。

而且隨着競爭的消費者可以有多個節點並行處理數據:http://camel.apache.org/competing-consumers.html

然後你應該做的請求/應答通過JMS所以回覆消息發送回其中的消息將被彙總隊列:http://camel.apache.org/request-reply.html

,並確保學習有關請求的信息/過JMS回覆因爲有幾個選項可以使這個速度快:http://camel.apache.org/jms

而對於ActiveMQ代理分發,那麼你可以設置經紀人起來br的網絡okers(NOB):http://activemq.apache.org/networks-of-brokers.html