我正在使用ActiveMQ並且有一個問題:在等待消費者的同時,持久消息是如何以及何時真正交換到磁盤的?ActiveMq,未消費的消息始終在代理的內存中?
我正在使用虛擬主題,並創建隊列使用者以接收來自它們的消息。所有消息都是持續存在(我已驗證所有未使用消息的記錄確實存在於持久性存儲中)
我有多個消費者定期上線和下線。將jconsole連接到activemq後,我注意到所有未被佔用的消息似乎都包含在代理的內存中。他們不會交換到磁盤,至少我無法驗證。 設置memoryUsage
或打開producerFlowControl
- 沒有任何影響。如果流量控制打開時,Broker是否被阻塞,如果流量控制打開,MemoryPercentUsage會繼續增加,或者MemoryPercentUsage持續增加。
當activemq通過將消息存儲到磁盤/持久性存儲來釋放內存時?還是這樣做?我如何驗證它是否是磁盤空間而不是RAM,這會在隊列中有數百萬個未被佔用的消息長時間運行時限制代理?
喜卡卡,謝謝你的回覆。如果將'producerFlowControl'設置爲** false **,以便存儲消息呢?如果你知道,'storageUsage' - 它總是關於硬盤空間,或者它可能意味着數據庫的大小? – Paul