首页 > 解决方案 > 消息未被使用时如何清理activemq队列

问题描述

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

如果一条消息在特定的时间范围内没有被消费,它是否会被删除?

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

标签: activemq

解决方案


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

如果您不想更改代码,则可以让代理完成工作。在 ActiveMQ 5.x 中,您可以使用时间戳插件。在ActiveMQ Artemis中,您可以使用.expiry-delay address-setting


推荐阅读