管理持久订阅者
长时间离线的持久主题订阅者通常在系统中是不受欢迎的。原因是代理需要为这些订阅者保留发送到这些主题的所有消息。随着时间的推移,这种消息堆积会耗尽代理存储限制,例如导致系统整体速度变慢。
您可以始终使用管理工具(如JConsole 或Web 控制台)手动取消订阅不活动的持久订阅者,但显然可以做更多的事情来帮助管理使用持久订阅者的系统(可能来自它们无法控制的环境)。
从版本 5.6 开始,我们在这一领域引入了一些改进。
消息过期
某些应用程序会发送带有指定生存时间的邮件。如果这些消息保留在代理上供离线持久订阅者使用,则需要在它们达到过期时间时将其删除。就像我们对队列所做的那样,现在我们默认每 30 秒检查一次这些消息,这可以通过适当的目标策略进行调整。例如,以下条目
<policyEntry topic=">" expireMessagesPeriod="300000"/>
将配置代理每 5 分钟检查一次过期消息。
删除不活动的订阅者
我们可以做的另一件事是自动取消订阅在一段时间内不活动的持久订阅者。为此,我们引入了两个新的代理属性
属性 | 默认值 | 描述 |
---|---|---|
offlineDurableSubscriberTimeout | -1 | 删除不活动的持久订阅者之前的时间量(以毫秒为单位)。默认值为 -1,表示不删除它们 |
offlineDurableSubscriberTaskSchedule | 300000 | 我们检查的频率(以毫秒为单位) |
一个示例配置可能如下所示
<broker name="localhost" offlineDurableSubscriberTimeout="86400000" offlineDurableSubscriberTaskSchedule="3600000">
这意味着我们每小时检查一次,并删除已经离线一天的订阅者。