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

为何MQTT QoS 2中接收方会响应重发的PUBREL报文?

MQTT QoS2交互流程

MQTT QoS2中PUBREL重发的疑问解答

接收方对重复PUBREL的处理

按照MQTT 3.1.1/5.0标准,接收方收到PUBREL并回复PUBCOMP后,需要丢弃的是该报文ID关联的原始PUBLISH消息内容,但会保留“该ID的PUBREL请求已处理”的状态标记:

  • 当发送方重发PUBREL时,接收方通过标记识别这是重复请求,无需重新投递原始消息,直接回复合法的PUBCOMP即可。
  • 这完全符合标准要求,标准的核心是避免消息重复投递,而非拒绝处理重复的控制报文。

发送方重发PUBREL的原因

发送方发送PUBREL后会启动重发定时器:

  • 若超时前未收到对应PUBCOMP,则判定PUBREL或PUBCOMP在传输中丢失;
  • 为保证QoS2“恰好一次”的投递语义,发送方必须重发PUBREL,直到收到PUBCOMP确认,确保整个QoS2流程闭环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:27:47