我有以下情况影响我们的 ActiveMQ 5.8 代理。
Windows 工作站上的几个 Perl 脚本使用 STOMP 连接到 ActiveMQ 并订阅(非持久)各种主题。工作站电源出现故障。
使用 Web 控制台,根据显示的消费者数量和正在使用的高温消息存储,我可以看到 ActiveMQ 仍然认为这些订阅者已连接。我已经设置了无生产者流量控制并设置了内存限制,所以我相信我看到的是 ActiveMQ 正在将所有消息假脱机到磁盘,因为它认为长期死亡的订阅者仍然连接并且可能最终会读取它们。 30 天过去了,ActiveMQ 仍然没有意识到这些订阅者不再连接。
是否有一种方法可以配置 ActiveMQ,以便最终自动清除像这样的“不死”订阅者连接?
最佳答案
虽然之前的回答基本正确,但ActiveMQ确实提供了Broker上STOMP传输到心跳连接的解决方案,即使客户端连接的是STOMP v1.0。我 blogged关于这个,前段时间ActiveMQ v5.6发布的时候,见STOMP 1.0默认心跳配置部分。另一种选择是为传输设置 tcp keepAlive,并调整您的操作系统以使用较短的默认检查间隔,默认值通常约为两小时。
关于Activemq STOMP : detecting and clearing dead nondurable subscribers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16824909/