使用.setAutomaticReconnect(true)自动重连,在重连后会失去之前订阅的所有主题,并且我已经使用了.setCleanStart(false)和固定的clientid。
听起来很奇怪,可以看看 emqx 完整的 debug 日志么
这个没改啊
你用的 emqx 的详细版本号是多少?
1.看看这 3 个命令的输出是什么:
./bin/emqx_ctl conf show authentication
和
./bin/emqx_ctl conf show authorization
和
./bin/emqx_ctl conf show mqtt
- 试试订阅qos 为 0 的是否能正常订阅。
配置没问题。
应该是 bug,你升级到 5.8.5 应该就好了。
好的我试试
我想问下我没找到升级指南,有直接升级的命令吗还是要卸载后重新下
最好把 data 目录给删除掉。
Access denied for user 'fdrobot'@'127.0.0.1' (using password: YES)
你的 mysql 拒绝让 EMQX 连接的。
要修复这个MySQL数据库连接错误,您可以尝试以下步骤:
- 检查凭据
- 确认用户名 ‘fdrobot’ 是否正确
- 验证密码是否准确
- 使用MySQL管理工具或命令行检查用户账户
- 重置或创建用户权限
-- 创建用户(如果不存在)
CREATE USER 'fdrobot'@'127.0.0.1' IDENTIFIED BY '新密码';
-- 授予必要的数据库权限
GRANT ALL PRIVILEGES ON mqtt_user.* TO 'fdrobot'@'127.0.0.1';
-- 刷新权限
FLUSH PRIVILEGES;
- 验证连接配置
- 检查应用程序的数据库连接配置文件
- 确保主机、端口、用户名和密码正确
- 检查是否使用了正确的连接字符串
- 检查MySQL服务器设置
- 确保MySQL服务正在运行
- 检查服务器的网络和防火墙设置
- 验证localhost和127.0.0.1的连接是否被正确配置
- 日志排查
- 查看MySQL错误日志
- 检查系统日志以获取更多详细信息
那用了5.8.5断网后还是会丢失订阅的主题这个问题有办法解决吗
建议你打开 debug 日志然后传一个完整的日志上来看看。标记说明一下是哪一条日志导致你的哪一条订阅丢弃的。我也不知道是哪里有 bug
请提供完整的 debug 日志才能有助于分析的。
从这个上下文:我现在知道你是用的 clean start false 连接,你把session expiry interval 设置为了多少?
一般的订阅关系维护有 2 种方式。
- 不使用MQTT会话时,connect 时使用 clean start =true, 上线成功后自己订阅主题。重连成功后自己再次订阅主题。
- 使用 MQTT 会话,connect 时使用 clean start = true, session_expiry_interval=3600,这意味着如果客户端断线小于3600 秒,这断时间内的消息和订阅关系都不会丢,会在客户端重连上线时发给客户端。
所以需要在debug日志找到:第一次 connect 包使用的什么参数,重连时的 connect 又是什么参数,距离第一次 connect 的时间过去了多久。只有知道这 3 个点,就能排查出为什么订阅关系没了。
推荐你开启 emqx 的 debug 日志,耐心自己找找上面说的,应该就能找到原因的。