我的emqx是5.10版本,
订阅者服务启动后,怎么会一次性把积压的消息都读取到服务中,有办法加限制吗,如每次取几条。
这是持久会话+离线消息导致的正常行为。
要限制一次性拉取,按需求选:
- 不需要离线消息:客户端 CONNECT 里
clean_start=true且session_expiry_interval=0。 - 需要离线但要限速:调小客户端
Receive Maximum,以及 EMQX 侧zone.external.mqtt.max_inflight/zone.external.mqtt.max_awaiting_rel(只影响 QoS1/2)。 - 不要积压太久:发布端设置
message_expiry_interval,或者缩短session_expiry_interval。 - 硬性限制队列:给
zone.external.mqueue.max_len设一个上限,超过就会丢弃/回压。
感谢,之前没注意到,原来Qos是用来限制emqx到订阅者的,之前还以为是生产者到emqx.