我正在开发一个由一些模块组成的应用程序。在其中一个模块中,有人创建了一个发布主题消息的主题生产者,但该模块没有主题消费者来使消息出列。主题生产者使用 .将 time-to-live 属性设置为 300000 毫秒setTimeToLive()
。
我希望如果没有消费者,消息会在 300000 毫秒内过期并被释放。
该应用程序部署在 Tomcat 6.0.36 上,它使用外部 ActiveMQ 服务器来处理队列和主题。
在主题设置下的 MBeans 选项卡中使用 Java VisualVM 监视 ActiveMQ 我看到变量“入队计数”增加了,但我不明白生存时间设置是否对这些消息生效。我预计会看到计数器“ExpiredCount”增加,但它仍然固定为 0。
有没有办法了解这些消息是否仍保留在内存中或是否已被释放?
非常感谢!
编辑:
我在 netbeans 7.3 上使用 j2ee 教程示例进行了一些测试,使用内部 glassfish 3.1 作为服务器,使用 jvisualvm 监控它,并且所有工作都如 api 所述:
JMS API 没有提供浏览主题的机制。消息通常一出现就从主题中消失:如果没有消息消费者来消费它们,JMS 提供者就会删除它们。尽管持久订阅允许消息在消息消费者不活动时保留在主题上,但不存在检查它们的工具。
我读到 glassfish 在 activeMQ 内部使用,所以我希望这对独立的 ActiveMQ 服务器也有效。
结束编辑。