我遇到以下情况正在影响我们的ActiveMQ 5.8代理。
Windows工作站上的几个Perl脚本使用STOMP连接到ActiveMQ,并订阅了(非持久的)各种主题。工作站电源出现故障。
使用Web控制台,我可以看到ActiveMQ仍然根据显示的使用者数量和所使用的高温消息存储来认为这些订户已连接。我没有设置生产者流控制并设置了内存限制,所以我相信我看到的是ActiveMQ正在将所有消息假脱机到磁盘,因为它认为死了很久的订户仍然可以连接,并且最终可能会读取它们。已经30天了,ActiveMQ仍然没有意识到这些订户已不再连接。
有没有一种配置ActiveMQ的方法,这样最终会自动清除“不死”的用户连接?
最佳答案
尽管先前的答案基本上是正确的,但ActiveMQ确实为代理上的STOMP传输提供了心跳连接解决方案,即使客户端使用STOMP v1.0进行了连接也是如此。我不久前发布ActiveMQ v5.6时就对此表示blogged,请参阅STOMP 1.0默认心跳配置部分。另一个选择是将tcp keepAlive设置为打开,并调整操作系统以使用更短的默认检查间隔,默认间隔通常为两个小时左右。