如果发布了QoS1 o 2消息并且没有从客户端收到相应的确认,是否有人知道Watson IoT代理会做什么?它是否实现了超时(比如20秒左右),然后再次重新发送消息?似乎有些经纪人这样做,而其他经纪人只在新连接上重新发送消息(如果保留当然设置为1)。在这一点上,MQTT规范有点模糊。
答案 0 :(得分:1)
对于尚未确认该消息的客户端,将在邮件中考虑该消息,并且仅当该客户端断开连接并重新连接时才会发生该消息重新传递(但仅当客户端是干净的会话= 0时)
对于QoS1和2: 至少一次(QoS1)
对于服务质量等级1(QoS1),消息始终至少传送一次。如果在发送方收到确认之前发生故障,则可以多次发送消息。消息必须本地存储在发送方,直到发送方收到消息是由接收方发布的确认。如果必须再次发送消息,则存储该消息。
恰好一次(QoS2)
"恰好一次"服务质量等级2(QoS2)是最安全但最慢的传输模式。该消息始终只发送一次,并且还必须本地存储在发送方,直到发送方收到消息由接收方发布的确认。如果必须再次发送消息,则存储该消息。使用服务质量等级2,使用比第1级更复杂的握手和确认序列,以确保消息不重复
MQTT保持活动间隔
MQTT保持活动间隔(以秒为单位)定义了在客户端和代理之间没有通信的情况下可以通过的最长时间。 MQTT客户端必须确保在没有与代理进行任何其他通信的情况下发送PINGREQ数据包。保持活动间隔允许客户端和代理检测到网络出现故障,导致连接中断,无需等待TCP / IP超时时间到达。
如果您的Watson IoT Platform MQTT客户端使用共享订阅,则保持活动间隔值只能设置为1到3600秒。如果请求值0或大于3600的值,则Watson IoT Platform代理将保持活动间隔设置为3600秒。
留言
Watson IoT Platform为MQTT消息传递的保留消息功能提供有限支持。如果在从设备,网关或应用程序发送到Watson IoT Platform的MQTT消息中将保留消息标志设置为true,则将消息作为未保留的消息处理。 Watson IoT Platform组织无权发布保留的消息。 Watson IoT Platform服务在设置为true时会覆盖保留的消息标志,并处理消息,就像保留的消息标志设置为false一样。