ActiveMQ之定期清理離線的持久訂閱者

概述

通常,我們不希望系統中存在長時間離線的持久訂閱者,因爲Broker需要爲它們保留它們訂閱的topic的所有消息。而且隨着時間的推移,將會導致達到存儲限制,從而導致系統變慢。

當然,你可以通過JConsole或Web Console等管理工具來手動取消不活躍的持久訂閱者。但顯然可以採取更多措施來幫助管理。

過期消息

一些應用程序發送的消息有一定的過期時間。如果這些消息存儲在Broker上供離線的持久訂閱者使用,我們需要在它們到期時將其刪除。就像我們的隊列一樣,現在默認是每30秒檢查一次這些消息,可以使用適當的目標策略進行調整。

<policyEntry topic=">" expireMessagesPeriod="300000"/>

如上配置,broker每5分鐘檢查一次過期的消息。

移除不活躍的訂閱者

我們可以自動取消在一段時間內不活躍的持久訂閱者。

配置示例如下:

<broker name="localhost" offlineDurableSubscriberTimeout="86400000" offlineDurableSubscriberTaskSchedule="3600000">
屬性 默認值 描述
offlineDurableSubscriberTimeout -1 我們刪除非活動持久性訂閱者的時間(以毫秒爲單位)。 默認值-1,表示不刪除它們
offlineDurableSubscriberTaskSchedule 300000 檢查頻率(以毫秒爲單位)

上面的配置示例,表明broker會每小時檢查並刪除已離線1天的訂閱者。

參考:http://activemq.apache.org/manage-durable-subscribers.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章