3

我有以下影响我们的 ActiveMQ 5.8 代理的情况。

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

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

有没有办法配置 ActiveMQ,以便最终自动清除像这样的“不死”订阅者连接?

4

2 回答 2

0

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

于 2013-06-02T19:52:16.423 回答
0

虽然 Stomp 1.1+ 支持Heartbeating,但 Active MQ 目前不支持Stomp 的非活动消费者检测。(通常通过wireFormat.maxInactivityDuration实现)。

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

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

于 2013-05-29T23:29:27.510 回答