不收集消息时如何清理ActiveMQ队列

问题描述

我在Java应用程序中使用ActiveMQ。我正在使用一个复合队列,在每个队列中我们都使用物理队列。

是否有一种超时方法,如果在特定时间段内未使用邮件,则会将其删除

我的问题是某些本应消耗消息的组件无法始终正常工作,因此我的磁盘越来越大。

解决方法

处理此问题的标准规范方法是使用javax.jms.MessageProducer#setTimeToLive方法,该方法告诉代理将消息仅保留一段时间。

如果您不想更改代码,则可以让经纪人来完成工作。在ActiveMQ 5.x中,您可以使用time stamp plugin。在ActiveMQ Artemis中,您可以使用expiry-delay address-setting