tb规则链消息转发调研

目前通过规则链的mqtt消息转发的方式,将多个tb子站的消息发送到tb总站。

现场出现了一个问题,tb总站和tb子站之间因为网络问题断了很多天,导致没有数据,开始调研这个问题。

 

首先tb是支持mqtt断掉重连的,在启动的时候,调用了这个周期性连接的方法,间隔时间目前默认1s一次

 

 

在发送之前会判断一下channel是否可用,如果因为总站关闭或者网络原因无法连接channel不可用时,就会返回一个future的异常,就算失败,消息也被丢弃了

 

 

 

 

题外话,因为自己的失误(本地和41环境用同一个client连接mqtt服务器导致channel频繁重启,一开始不知道为啥channel返回重启,查了挺久),以为是idel的时间太短

其实在读写空闲的后面跟了一个pingHandler,对于写空闲事件,会主动发送ping,触发了读写事件,避免channel被关闭,如果broker挂了或者网络不通,那么不到第二个idel的时间,channel就会不可用,触发重连机制

 

 

posted @ 2023-08-18 20:11  heroinss  阅读(9)  评论(0编辑  收藏  举报