擴展佇列
在單一訊息代理器中擴展到數萬個佇列相對簡單,但需要從預設設定進行一些配置更改。
減少執行緒
使用預設設定時,ActiveMQ Classic 配置為每個佇列使用一個調度執行緒。您可以在目的地策略條目上設定 optimizedDispatch 屬性 - 請參閱配置佇列。
ActiveMQ Classic 可以選擇在內部使用執行緒池來控制訊息的調度,但由於許多部署作業系統在處理大量執行緒方面表現良好,因此預設關閉此功能。若要啟用此選項,請在啟動腳本 INSTALL_DIR/bin/activemq 中設定 ACTIVEMQ_OPTS 以停用專用任務執行器 - 例如:
ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
或者,您可以在 /etc/activemq.conf 中設定 ACTIVEMQ_OPTS。
注意:從 ActiveMQ Classic 5.6 開始,預設停用專用任務執行器 (請參閱AMQ-3667)。
若要減少用於傳輸的執行緒數量,請考慮使用 NIO 傳輸 - 請參閱配置傳輸。
這是其中一個提供的範例訊息代理器設定檔案中使用的範例。
減少記憶體消耗
減少每個執行緒使用的記憶體 - 請參閱減少記憶體消耗
減少檔案描述符數量
ActiveMQ Classic 預設使用 amqPersistenceAdapter 來處理持久訊息。不幸的是,此持久性配接器 (以及 kahaPersistenceAdapter) 會為每個佇列開啟一個檔案描述符。當建立大量佇列時,您很快就會遇到作業系統的限制。
您可以選擇其他持久性選項
或者 - 嘗試使用 5.3 及更高版本中的新KahaDB