2011-09-30 49 views
3

我們的應用程序有 1)定製服務器(傳統ServerSocket),它響應 2)在客戶端桌面上運行的Java SWING應用程序/小程序。JMS隊列的最大數量

我們有超過140個這樣的自定義服務器(專用於每組揮杆客戶端)。我們已經構建了一個管理應用程序來管理服務器啓動,關閉和其他事情。對於Admin應用程序和服務器之間的通信,我們正在構建一個JMS應用程序。 由於服務器的負擔很重,我們並沒有將這個JMS放在同一個盒子上,因此我們只剩下一個選項來使用單獨的JMS盒子。我需要爲每個服務器分配一個隊列。

我的問題是我們可以在單個應用程序服務器上有140多個JMS隊列。如果是的話,應該是硬件的理想配置。如果不是,那麼你有什麼建議。

感謝

回答

3

我發現this有趣的文章前段時間:

[ActiveMQ的]經紀人一個節點上打開700個隊列由於打開的文件太多失敗後 - 顯然它每個隊列都有一個臨時文件,每個JAR(其中有124個!)的打開文件以及60個其他文件句柄。當客戶端退出時,打開的文件數量不會減少。一些谷歌搜索意味着ActiveMQ中存在許多與泄漏文件句柄相關的錯誤。

1

我會回答「if not」部分。

如果需要,可以通過使用消息選擇器來減少隊列數。一組服務器可以發送到一個隊列並通過消息屬性進行標識。您當然必須將其定義爲IP,即唯一標識服務器的URL。

儘管這是最後的解決方案,因爲可以更好地監視單獨的隊列。

2

您可以使用更少的隊列和message selectors(拉具體到每個客戶端的消息)或查看有關如何配置的ActiveMQ處理大量隊列的​​...

還,如果您正在使用KahaDB 5.3 +,然後優化爲使用更少的文件描述符,等等......