如何解决通过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-bytes
和address-full-policy
,以免经纪人不知所措。有关更多详细信息,请参见the documentation。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。