【发布时间】:2020-12-01 23:20:31
【问题描述】:
我在我的 Java 应用程序中使用 ActiveMQ。我正在使用一个复合队列,并且在每个队列中我们都使用物理队列。
如果一条消息在特定的时间范围内没有被消费,它是否会被删除?
我的问题是一些应该使用消息的组件并不总是工作,因此我的磁盘越来越大。
【问题讨论】:
标签: activemq
我在我的 Java 应用程序中使用 ActiveMQ。我正在使用一个复合队列,并且在每个队列中我们都使用物理队列。
如果一条消息在特定的时间范围内没有被消费,它是否会被删除?
我的问题是一些应该使用消息的组件并不总是工作,因此我的磁盘越来越大。
【问题讨论】:
标签: activemq
处理此问题的标准、符合规范的方法是使用 javax.jms.MessageProducer#setTimeToLive 方法告诉代理仅将消息保留一段时间。
如果您不想更改代码,则可以让代理完成工作。在 ActiveMQ 5.x 中,您可以使用 time stamp plugin。在ActiveMQ Artemis 中,您可以使用expiry-delay address-setting。
【讨论】: