2011-03-02 123 views
0

我有一個應用程序試圖訂閱很多不同的主題。ActiveMQ多訂閱凍結應用程序

服務器端通過這些主題發佈大量消息,一旦應用程序開始訂閱,它就會收到很多消息,以至於應用程序甚至無法到達訂閱功能的末尾。

看起來,OnMessage監聽器被氾濫得如此之多(監聽器是試圖自訂所有主題的類)。

因此,基本上有一種方法可以阻止郵件的接收,直到我訂閱了所有主題爲止?或者我錯過了什麼?

嘗試劃分所有主題的線程永遠不會再獲取處理器。 (如果服務器關閉,訂閱沒有問題,因爲它沒有收到任何東西,所以它不會丟失處理能力。)

在此先感謝您。

Paul。

回答

1

您可以嘗試降低消費者的預取限制,這可以防止代理在創建消息時嘗試分發如此多的消息,這有助於減少您看到的泛濫問題。

以下是一些可能有所幫助的文檔。 http://activemq.apache.org/what-is-the-prefetch-limit-for.html

蒂姆 - www.fusesource.com

+0

我實際使用的主題而不是隊列。我對跟蹤所有消息不感興趣。我甚至不關心我在訂閱期間收到的消息。 – Paulo 2011-03-02 15:35:17

+0

比什是對的。您需要設置預取限制。 – timsabat 2011-03-02 15:57:05

+0

設置預取與跟蹤消息無關,它只是調節代理將嘗試在客戶端每次訂閱時嘗試推遲的消息數量。如果您要創建大量訂閱到高活動目標的應用程序,那麼您應該設置較低的預取以減少客戶端在訂閱開始時接收到的流量,這會降低您看到的CPU過度開銷。閱讀我給你的鏈接文章,它解釋得很好。 – 2011-03-02 18:51:58