如何在MOSQUITO MQTT中处理具有相同ID的多个客户端?

如何在MOSQUITO MQTT中处理具有相同ID的多个客户端?,mqtt,mosquitto,Mqtt,Mosquitto,如果多个持久订阅者试图使用相同的客户机ID连接,我如何告诉mosquitto MQTT该怎么做 在错误配置订阅同一代理的不同测试环境时,我意外地遇到了这种情况。结果是,两个订阅者只收到了部分消息,mosquitto日志被垃圾邮件发送了“来自xxx的新连接”消息。最好是拒绝第二个订户立即出现这样的错误 我找到了一个,它似乎提供了一个选项,要么用新的用户替换旧的用户,要么拒绝新的用户 但是,在检查可用选项时,我看不到类似的选项。您看不到 MQTT规范规定,客户端ID必须是唯一的,正确的行为是将最旧的

如果多个持久订阅者试图使用相同的客户机ID连接,我如何告诉mosquitto MQTT该怎么做

在错误配置订阅同一代理的不同测试环境时,我意外地遇到了这种情况。结果是,两个订阅者只收到了部分消息,mosquitto日志被垃圾邮件发送了“来自xxx的新连接”消息。最好是拒绝第二个订户立即出现这样的错误

我找到了一个,它似乎提供了一个选项,要么用新的用户替换旧的用户,要么拒绝新的用户

但是,在检查可用选项时,我看不到类似的选项。

您看不到

MQTT规范规定,客户端ID必须是唯一的,正确的行为是将最旧的ID踢出,并用新的ID替换。

您不需要


MQTT规范规定,客户端ID必须是唯一的,正确的行为是将最旧的ID去掉,并用新的ID替换。

谢谢。我试图找到这方面的参考资料,但“3.1.2.4清洁启动”一节中没有描述这种情况。任何指针?请参阅3.1.4“连接操作”-“如果ClientID表示已连接到服务器的客户端,服务器将向现有客户端发送一个断开连接数据包,原因代码为0x8E(会话接管),如第4.13节所述,并且必须关闭现有客户端的网络连接[MQTT-3.1.4-3]。如果现有客户有遗嘱信息,则该遗嘱信息将按照第3.1.2.5节“谢谢”的说明发布。我试图找到这方面的参考资料,但“3.1.2.4清洁启动”一节中没有描述这种情况。任何指针?请参阅3.1.4“连接操作”-“如果ClientID表示已连接到服务器的客户端,服务器将向现有客户端发送一个断开连接数据包,原因代码为0x8E(会话接管),如第4.13节所述,并且必须关闭现有客户端的网络连接[MQTT-3.1.4-3].如果现有客户有遗嘱信息,则按照第3.1.2.5节的说明发布该遗嘱信息。”