2014-02-24 84 views
1

我們有一個服務調用,它返回與我們調用另一個服務,只需要一個ID在一個時間ID的列表,所以我們使用的是帶有並行處理駱駝分流轉向true。現在我們爲服務所做的電話是通過一個seda,所以我們可以暫停一下。這會導致並行處理不再平行的問題,因爲默認情況下seda只有1個併發消費者在使用它。駱駝分路器並行處理

選項:

  1. 把concurrentConsumers = X的SEDA
  2. 直接使用,而不是SEDA? (沒有超時選項?)
  3. 其他選項?

1和2的其中之一將是優選的?

回答

0

首先在分離器上將流設置爲true對於大消息很有用。這意味着它會以塊的形式分割輸入消息。這減少了內存開銷。所以這將提高大消息的性能。

對於要並行真正處理的seda隊列,您需要按如下方式設置seda路由。

<from uri="seda:report?multipleConsumers=true&amp;concurrentConsumers=16"/> 

這將允許路由使用多達16個線程爲併發使用者。 seda組件不實現任何類型的持久性或恢復,如果VM在消息尚未處理時終止,則它們將丟失。如果您需要持久性,可靠性或分佈式seda,請嘗試使用或者jmsactivemq

direct組件是同步的,並根據對多個消費者的文檔支持已被棄用。從駱駝2.1開始:直接終端不支持多個消費者。其他選項是vm組件。 vm組件與seda組件不同,因爲vm支持通過CamelContext實例進行通信 - 因此您可以使用此機制在Web應用程序間進行通信。實質上,vm組件是seda組件的擴展。

所以,如果如果你需要並行處理的direct組件是沒有用的。如果您需要通過CamelContent實例發送消息,則使用vm,如果不是,則使用seda,如上所述。