You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQTT订阅者不可用时QoS 1与QoS 2的行为澄清

MQTT 消费者不可用场景下的常见问题解答

问题1:生产者以QoS 1发送消息,代理已接收,是否返回确认报文?

会返回。QoS 1的确认逻辑仅发生在生产者与代理之间,和消费者状态完全无关。只要代理成功接收并存储了消息,就会立即向生产者发送PUBACK确认报文,完成生产者侧的QoS 1流程。后续向消费者投递的动作是代理独立处理的,不影响生产者的确认反馈。

问题2:QoS 1消息代理持续重试投递时,后续消息如何处理?

  • 代理会继续重传第一条未被消费者确认的消息,直到消费者恢复并返回PUBACK;
  • 生产者后续发送的消息会在代理中按**先进先出(FIFO)**的顺序排队,不会被提前投递;
  • 代理的重试间隔一般遵循指数退避策略(比如初始间隔1秒,每次失败后翻倍,直到达到预设的最大间隔),不会一直高频重试浪费资源,只有当重试失败后,才会等待设定时间再尝试下一次投递。

问题3:QoS 2消息代理是否会无限重试投递?

不会。QoS 2的“精确一次”是指通过双向握手确保消息不重复、不丢失,但代理不会无限制重试。不同MQTT代理(如Mosquitto、EMQX)会配置重试次数上限或超时窗口,当超过阈值后,会根据预设规则处理:比如将消息转入死信队列(DLQ)、丢弃消息,或者保留消息等待人工介入,避免持续占用系统资源。


内容的提问来源于stack exchange,提问作者d1du

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:52:13