通过MQTT消耗#订阅会导致丢失连接的队列很大

问题描述

我在两个具有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-bytesaddress-full-policy,以免经纪人不知所措。有关更多详细信息,请参见the documentation

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...