我一直在尝试使用https://www.npmjs.com/package/mqtt模拟大量发布,并发现该队列一次最多只能容纳65535条消息。 (如果我尝试发送更多邮件,其余的邮件将被丢弃)是否有此原因,并且有任何解决方法吗?
答案 0 :(得分:0)
因为这是MQTT spec
中允许的最大数据包ID数数据包ID是一个16位数字(最大65535),并且对于所有机上消息必须是唯一的。
SUBSCRIBE,UNSUBSCRIBE和PUBLISH(在QoS> 0的情况下)控制 包必须包含一个非零的16位包标识符 [MQTT-2.3.1-1]。客户端每次发送其中一个的新数据包 类型,必须为它分配当前未使用的数据包标识符 [MQTT-2.3.1-2]。如果客户端重新发送特定的控制数据包,则 它必须在随后的重发中使用相同的数据包标识符 包。数据包标识符在 客户端已处理了相应的确认数据包。在里面 QoS 1 PUBLISH的情况,这是对应的PUBACK;在这种情况下 QoS 2为PUBCOMP。对于SUBSCRIBE或UNSUBSCRIBE,它是 相应的SUBACK或UNSUBACK [MQTT-2.3.1-3]。相同条件 当服务器发送QoS> 0 [MQTT-2.3.1-4]的发布消息时,应用于服务器。