我使用mosquitto作为提供QoS1消息的代理。
有时,设备可能无法确认特定类型的消息。例如,如果消息导致设备重置,则设备将不会确认该消息。重启后,它将再次收到该消息。因此它将进入无限重启 - 连接 - 重启循环。设置干净会话标志不是一个选项,因为需要频繁断开连接,我不希望设备丢失断开时发送的消息。
我可以在编写设备和服务器端代码时注意防止这种情况发生,但不能排除错误的可能性。
我希望找到一些能让服务器端应用程序或管理员完全控制代理的东西 - 例如查询已连接/已注册客户端的列表,能够列出/删除特定客户端队列中的消息。在没有客户请求的情况下清理客户端的会话。
如果不是,我至少想知道是否有一个配置选项来控制mosquitto(或任何其他禁止基于云的代理)的QoS1 / QoS2消息的最大重试次数。客户端是GSM节点。这种无限循环最终会消耗大量的细胞数据。
MQTT很棒,但我发现经纪人缺乏实际应用所需的许多基本功能。