Activemq STOMP:检测并清除死亡的非持久用户

时间:2013-05-29 22:23:08

标签: activemq stomp

我有以下情况影响我们的ActiveMQ 5.8经纪人。

Windows工作站上的几个Perl脚本使用STOMP连接到ActiveMQ并订阅(非持久)到各种主题。工作站上的电源出现故障。

使用Web控制台,我可以看到ActiveMQ仍然认为这些订户是连接的,基于所显示的消费者数量和正在使用的高温消息存储。我没有设置生产者流量控制和设置内存限制,所以我相信我看到的是ActiveMQ将所有消息假脱机到磁盘,因为它认为长死用户仍然连接并可能最终读取它们。已经30天了,ActiveMQ仍然没有意识到这些用户已经不再连接。

有没有办法配置ActiveMQ,以便最终自动清除这些“不死”用户连接?

2 个答案:

答案 0 :(得分:0)

虽然Stomp 1.1+支持Heartbeating,但Active MQ目前不支持Stomp的inactive consumer detection。 (通常使用 wireFormat.maxInactivityDuration 实现)。

Be Careful:
These values are currently not supported but are planned for a later release

虽然ActiveMQ支持Openwire。 i,在配置的持续时间之后,消费者将被视为死亡!

答案 1 :(得分:0)

虽然之前的答案基本上是正确的,但ActiveMQ确实为Broker上的STOMP传输提供了心跳连接的解决方案,即使客户端与STOMP v1.0连接也是如此。我发布ActiveMQ v5.6前一段时间blogged,请参阅STOMP 1.0默认心跳配置部分。另一种选择是为传输设置tcp keepAlive并调整操作系统以使用较短的默认检查间隔,默认值通常为两小时左右。