错误报告
环境
- EMQX 版本:docker emqx/emqx:5.0.3
- 操作系统版本:Ubuntu 20.04.5 LTS
- 连接语言: golang 1.7
- 连接库: GitHub - eclipse/paho.mqtt.golang v1.4.1
问题描述
我有一台设备,以每分钟1条的频率定时向 emqx 发送信息
我的程序是直接订阅当前 topic 然后解析数据写入 tdengine 并打印日志
程序中我 重写了 SetConnectionLostHandler SetOnConnectHandler 两个回调
预期行为
程序不被kill 掉,程序会一直接收信息并写入tdengine并在日志中打印
实际行为
程序刚运行时,一切符合预期,程序运行一段时间后(不知道多长时间), 程序还活着,收不到信息了
回调函数没有调用,日志中没有error输出,如果发送MQTT信息会出现 TIMEOUT 错误。
重启程序,恢复正常
程序多长时间会发生这个问题,我还没有找到规律,可能一两个小时,可能5,6个小时。
EMQX后台发现当前客户端客户端已经不在线了,后台也没有看到什么警告信息。
另外我还不知道怎么查看 EMQX的日志文件,所以我无法提供 emqx的日志。
客户端初始化代码
opts := mqtt.NewClientOptions()
opts.AddBroker(addr)
opts.SetClientID("sc_client" + "-" + strconv.FormatInt(time.Now().UnixNano(), 36))
opts.SetKeepAlive(10 * time.Second)
opts.SetMaxReconnectInterval(10 * time.Second)
opts.SetOnConnectHandler(...)
opts.SetConnectionLostHandler(...)
client = NewClient(opts)
请教一下,我该如何让程序正常运行