管理持久訂閱者
長時間離線的持久主題訂閱者通常在系統中是不希望存在的。原因在於,Broker需要為這些訂閱者保留所有傳送到這些主題的消息。而這種消息堆積可能會隨著時間推移耗盡 Broker 的儲存空間限制,例如,導致系統整體速度變慢。
您始終可以使用管理工具(如 JConsole 或 Web 控制台)手動取消非活動持久訂閱者的訂閱,但顯然還有更多可以做的事情來幫助管理使用持久訂閱者的系統(可能來自它們無法控制的環境)。
從 5.6 版開始,我們在此領域引入了一些改進。
過期消息
某些應用程式會傳送具有指定存活時間的消息。如果這些消息保留在 Broker 上,供離線的持久訂閱者使用,我們需要在它們達到過期時間時將其刪除。就像我們對佇列所做的那樣,現在我們預設每 30 秒檢查這些消息,可以使用適當的目的地原則進行調整。例如,以下條目
<policyEntry topic=">" expireMessagesPeriod="300000"/>
將配置 Broker 每 5 分鐘檢查一次過期消息。
移除非活動訂閱者
我們可以做的另一件事是自動取消在一段時間內不活動的持久訂閱者的訂閱。為此,我們引入了兩個新的 Broker 屬性
屬性 | 預設值 | 描述 |
---|---|---|
offlineDurableSubscriberTimeout | -1 | 我們在移除非活動持久訂閱之前等待的時間量(以毫秒為單位)。預設值 -1 表示不移除它們 |
offlineDurableSubscriberTaskSchedule | 300000 | 我們檢查的頻率(以毫秒為單位) |
一個範例配置可能如下所示
<broker name="localhost" offlineDurableSubscriberTimeout="86400000" offlineDurableSubscriberTaskSchedule="3600000">
這表示我們每小時檢查一次,並移除已離線一天的訂閱者。