目前通过规则链的mqtt消息转发的方式,将多个tb子站的消息发送到tb总站。
现场出现了一个问题,tb总站和tb子站之间因为网络问题断了很多天,导致没有数据,开始调研这个问题。
首先tb是支持mqtt断掉重连的,在启动的时候,调用了这个周期性连接的方法,间隔时间目前默认1s一次
在发送之前会判断一下channel是否可用,如果因为总站关闭或者网络原因无法连接channel不可用时,就会返回一个future的异常,就算失败,消息也被丢弃了
题外话,因为自己的失误(本地和41环境用同一个client连接mqtt服务器导致channel频繁重启,一开始不知道为啥channel返回重启,查了挺久),以为是idel的时间太短
其实在读写空闲的后面跟了一个pingHandler,对于写空闲事件,会主动发送ping,触发了读写事件,避免channel被关闭,如果broker挂了或者网络不通,那么不到第二个idel的时间,channel就会不可用,触发重连机制
标签:总站,mqtt,消息,转发,tb,channel,调研 From: https://www.cnblogs.com/heroinss/p/17641517.html