Mosquitto是否从1.4.15更改为1.5,抵消了QoS 1和2的好处?

时间:2019-03-28 05:38:23

标签: mqtt mosquitto

我刚刚从mosquitto 1.4.5更改为1.5的过程中注意到,由于以下理由, retry_interval 变量已被删除。写在change_log.txt中。参见github link

  

可以通过考虑何时   可能已经超时。

     
      
  • 如果连接不可靠且已断开但没有一端   注意,重新连接时将重试消息。正在发送   其他PUBLISH或PUBREL不会更改任何内容。

  •   
  • 如果客户端超载/无法响应/连接缓慢,则   发送其他发布或发布不会帮助客户端捕获   起来一旦积压清除,客户端将做出响应。如果不是   能够赶上,发送其他副本也无济于事。

  •   

删除的理由是,如果客户端超负荷并且仍然无法响应,则无需重新发送。但是根据Oasis中协议的QoS 1和2定义。 mqtt-v3.1.1-os

  

4.4邮件传递重试

     

当客户端在CleanSession设置为0的情况下重新连接时,客户端和服务器都必须重新发送所有未确认的信息   PUBLISH数据包(QoS> 0)和PUBREL数据包使用它们   原始数据包标识符。

我尝试读取源代码更改,但确实删除了重试。我得到了更改的合理性,但是它没有违反软件的协议合规性吗?如果网络长时间不可用,重试发送将毫无用处,但是如果网络故障是间歇性的,则删除重试会使QoS> 0对该代理不可靠吗?

1 个答案:

答案 0 :(得分:2)

retry_interval选项控制在正常操作期间未确认消息的情况,即客户端似乎没有断开连接但未发送确认。

规范中讨论的消息传递重试涵盖了客户端重新连接的情况。 Mosquitto中存在此行为,因此不违反规范,并且将重试消息。