不消费消息时如何清除activemq队列

How clean activemq queue when messages are not cunsumed

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

是否有一种方法可以超时,如果一条消息在特定时间范围内未被使用,它就会被删除?

我的问题是一些应该使用消息的组件并不总是工作,因此我的磁盘变得越来越大。

处理此问题的标准 spec-compliant 方法是使用 javax.jms.MessageProducer#setTimeToLive 方法告诉代理只将消息保留一段时间。

如果您不想更改您的代码,那么您可以让经纪人来完成这项工作。在 ActiveMQ 5.x 你可以使用 time stamp plugin. In ActiveMQ Artemis you can use the expiry-delay address-setting.