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

Mqtt MOSQUITO是否从1.4.15更改为1.5,从而抵消了QoS 1和2的好处?,mqtt,mosquitto,Mqtt,Mosquitto,我刚刚从mosquitto 1.4.5到1.5的更改中注意到,retry\u interval变量已被删除,并给出了下面所述的理由。在change_log.txt中写入。请参阅github 这种行为的改变可以通过考虑 可能已发生超时 如果连接不可靠且已断开,但没有一端 请注意,消息将在重新连接时重试。发送 额外的发布或发布不会改变任何事情 如果客户端过载/无法响应/连接速度慢,则 发送额外的PUBLISH或PUBREL不会帮助客户端捕获 向上的一旦积压工作清理完毕,客户将作出响应。如果不是

我刚刚从mosquitto 1.4.5到1.5的更改中注意到,retry\u interval变量已被删除,并给出了下面所述的理由。在change_log.txt中写入。请参阅github

这种行为的改变可以通过考虑 可能已发生超时

  • 如果连接不可靠且已断开,但没有一端 请注意,消息将在重新连接时重试。发送 额外的发布或发布不会改变任何事情

  • 如果客户端过载/无法响应/连接速度慢,则 发送额外的PUBLISH或PUBREL不会帮助客户端捕获 向上的一旦积压工作清理完毕,客户将作出响应。如果不是 如果能够赶上,发送额外的副本也不会有帮助

删除的原因是如果客户端过载,并且无论如何都无法响应,因此不需要重新发送。但是根据Oasis协议中QoS 1和QoS 2的定义

4.4邮件传递重试

当客户端在CleanseSession设置为0的情况下重新连接时,客户端和服务器都必须重新发送任何未确认的数据 发布数据包(其中QoS>0)和使用其 原始数据包标识符


我尝试读取源代码更改,但它确实删除了重试。我得到了更改的合理性,但它是否没有破坏软件的协议遵从性?如果网络长时间关闭,重试发送将无效,但如果网络故障是间歇性的,删除重试将使QoS>0对此代理不可靠?

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


规范中讨论的消息传递重试包括客户端重新连接的情况。MOSQUITO中存在此行为,因此没有违反规范,将重试消息。

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


规范中讨论的消息传递重试包括客户端重新连接的情况。Mosquitto中存在此行为,因此没有违反规范,将重试消息。

我明白了,删除的重试逻辑是立即失败。我明白了,删除的重试逻辑是立即失败。