客户端及MQTT SDK相关问题

请问是否有基于FreeRTOS或者RTX操作系统的MQTT SDK源码?

通过paho官网查看,提供了多个版本的C/C++ client,有的是支持posix标准的(unix、linux、windows),有的是支持嵌入式系统的。可以参考这个连接:https://www.eclipse.org/paho/clients/c/embedded/

为什么publish的QOS等级为2后,则会断开服务?

目前暂不支持Qos=2的服务。

物接入是否支持消息缓存?

支持。当客户端连接物接入服务时,如果Clean Session位被设置为false,则该连接被认为是持久连接,其具体表现为:当该客户断开后,任何订阅的主题和QoS被设置为1或2的信息都会保存,直到该客户端再次连接上server端,物接入服务支持将该消息保留24小时。若“clean session”被设置为true,当该客户断开后,所有的订阅主题都会被移除。

本方法不推荐大量使用,如果需要保存大量数据,推荐将物接入的数据转发到Kafka。

与物接入服务连接成功,往一个主题发送消息,就直接断开。

此情况一般出现在对应主题无 pub 权限。项目请严格按照影子给定的主题操作;数据型项目请检查策略配置。

连接物接入服务时,出现连接协议错误。

大多是由于选择的端口和期望的协议不一致,正确端口号是TCP:1883, TLS:1884,Websocket:8884。

遗嘱消息的触发条件有哪些?

遗嘱(Will Message)消息必须被存储在服务端并且与这个网络连接关联。网络连接关闭时,服务端必须发布这个遗嘱消息,除非服务端收到Client发送的DISCONNECT报文。

遗嘱消息发布的条件,包括但不限于:

服务端检测到了一个I/O错误或者网络故障。

客户端在保持连接(Keep Alive)的时间内未能通讯。

客户端没有先发送DISCONNECT报文直接关闭了网络连接。

由于协议错误服务端关闭了网络连接。

MQTT客户端网络连接异常,但在keepalive时间内恢复,客户端是否需要重新建立MQTT连接?

需要,如果MQTT客户端异常断开,都需要重新建立MQTT连接并重新订阅主题。

如果MQTT客户端cleansession=false,连接异常断开后,服务器会维护session信息,重新连接后不需要再订阅主题。