订阅者服务启动后,怎么会一次性把积压的消息都读取到服务中,有办法加限制吗

我的emqx是5.10版本,
订阅者服务启动后,怎么会一次性把积压的消息都读取到服务中,有办法加限制吗,如每次取几条。

这是持久会话+离线消息导致的正常行为。
要限制一次性拉取,按需求选:

  • 不需要离线消息:客户端 CONNECT 里 clean_start=truesession_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.