问题描述
我在两个具有4个核心和16 GB RAM的Ubuntu 18.04 VM上使用Artemis 2.14和Java 14.0.2。我的生产者每秒向大约5500个不同的主题发送大约2,000条消息。
当我使用基于证书的授权通过MQTT.FX客户端连接并订阅#
时,MQTT.FX客户端死亡,并且在Web控制台中,我在{{1 }}的客户ID不会被Artemis清除。似乎该队列一直增长,直到100%使用RAM。一段时间后,我的Artemis Broker重新启动。
阿耳emi弥斯的这种行为正常吗?一段时间后,我如何告诉Artemis清理“僵尸”队列?
我已经尝试以不同的方式使用此配置参数,但是没有任何效果:
#
解决方法
在以下情况下,默认情况下会自动删除自动创建的队列:
- 消费者人数为0
- 邮件数为0
这样做是为了避免无意删除任何邮件。
但是,您可以将auto-delete-queues-message-count
中相应的address-setting
broker.xml
更改为-1
,以跳过邮件计数检查。另外,如果需要,可以调整auto-delete-queues-delay
来配置延迟。
值得注意的是,如果您创建诸如#
之类的订阅(这是非常危险的),则需要准备好尽快消耗掉消息,以免消息在队列中堆积。如果无法避免积累,则应根据需要配置max-size-bytes
和address-full-policy
,以免经纪人不知所措。有关更多详细信息,请参见the documentation。