请问 MQTT 会话 “最大消息队列长度” 能否针对某一个连接客户端设置 , 而不是全局设置呢?
感谢回复。
我描述一下我们的使用场景,烦请看看有没有更好的解决办法。
会有上万个设备同时连接到 emqx mqtt broker,消费端服务是通过 Clean Session
= false 来订阅这些设备消息, 以便服务重启或升级期间不会丢失消息。
消息有时候在几秒钟内会达到几十万条——在这种情况下,就希望消息可以被缓存起来,达到削峰效果。
另外, 消费端的服务会因为比如版本发布、出现bug短时间内重启之内的,也会造成消息的累积。
其中, mqtt 会话的消息队列我们又尝试配置过比较大的值(比如100000),但是这个配置是全局的, 不确定是否会有不好的影响,看是否有更好的办法解决以上场景。
这种的话其实是最好能借助 EMQX 企业版桥接消息到 Kafka 的能力来做。
为所有客户端配置较大的最大消息队列长度,可能会导致实际运行时 EMQX 占用内存过多出现 OOM 被 OS 杀死。
好的, 后续我们也会了解下企业版本。
其他客户端消息很少,不会用到这么长的队列, 所以是不是对内存就没有影响呢?因为我理解这个队列长度值是一个限制阈值 而不是预留内存空间。