现象:
根据接口文档订阅MQTT消息,没有接收到消息;
使用http开放接口订阅可以接收到消息
原因:
MQTT服务器默认设置消息最大为64KB,因为接收的是人脸识别的消息含图片,所以消息超过了64KB,导致发布失败,从而订阅者没有收到
解决方法:
修改emq.conf文件中的mqtt.max_packet_size参数大小
解决步骤:
1.因为是docker部署的emq服务器,通过cli命令行界面查看错误日志
2.发现每发布一条识别记录业务相关的消息,就会出现 Framing error - invalid_mqtt_frame_len 的错误,根据翻译理解 消息帧错误-无效的帧长度
网上查找答案:发送的消息内容太长,需要修改mqtt服务器的配置。
3.修改配置文件
编辑配置文件emq.conf
使用查找packet,从而找到mqtt.max_packet_size参数并修改
修改大小
附:linux vi编辑模式下,查找关键字
1、进入vi中,默认命令输入模式;如果已经是编辑模式,按“ESC”进入命令输入模式
2、输入斜杠“/”,这时屏幕会跳转到底部,输入栏出现"/"
3、输入需要查找的关键字,回车;输入n,查看下一个;输入N,查看上一个