有一个硬件设备通过tcp接入emqx,那么向主题推送消息是否基于tcp协议,会不会存在tcp粘包、半包问题以及emqx有解决处理吗?
比如一个客户端向某一个主题,发送json格式的payload,这个数据在由硬件发往emqx过程中丢失部分数据,或者emqx接收不完全,导致最终数据不完整?? 比如后面少了},导致无法直接解析json字符串。感谢解答
有一个硬件设备通过tcp接入emqx,那么向主题推送消息是否基于tcp协议,会不会存在tcp粘包、半包问题以及emqx有解决处理吗?
比如一个客户端向某一个主题,发送json格式的payload,这个数据在由硬件发往emqx过程中丢失部分数据,或者emqx接收不完全,导致最终数据不完整?? 比如后面少了},导致无法直接解析json字符串。感谢解答
你好,MQTT 是应用层协议,底层传输协议是 TCP 或者 WebSocket。
TCP 粘包这些问题肯定会有,这是避免不了的。但是 MQTT 作为一个正常的消息协议,是能够让接收方判断哪里是包的开始,哪里是包的结束的。
TCP 会保证数据可靠到达,所以不用担心数据在传输过程中丢失。
理解,tcp是能基本保证数据是完整发给接收方的,那我追问一下,我在emqx挂载了一个grpc钩子,把每次收到的消息payload直接进行持久化,emqx内部对于这种粘包问题有解决吗,或者说能不能基本确保主题的每一次消息都是数据隔离的,不会出现我这次收到消息数据但还包含上次消息数据的一部分??
每次触发钩子的都是完整的、单独的消息
感谢猫猫解惑