单例模式MQTT服务为什么会重复收到消息
一开始,我写的MQTT并是不单例模式,用到申请,用完销毁。
后来有一次需要转发300个设备的消息,cpu直接100%了,然后改为单例模式,这里顺便插一句,对方鉴权用的设备ID做用户名,然后对方收的永远只有第一个设备的数据(一开始没发现是第一个),于是这个问题断断续续绕了快一周(主要是大家手上都有事,不一定都有空)。
所以这里其实是记录两个问题,第一个就是 单例模式的MQTT消息丢失,只有少部分接收成功,很有可能是鉴权导致的。
第二个MQTT为什么会收到重复的数据,是因为习惯了之前的写法,在单例模式的时候,每写一个发布,就顺便写一个接收在那,忘记了事件会叠加,然后收到数据后,有几个地方绑了接收事件,就重复几遍数据。
正确的姿势是,初始化的时候,声明一个接收,然后就不管了,需要发布的地方直接发布,不用管接收
原谅我日志越来越粗糙,实在是没有空
将偷懒进行到极致,是一个程序员的基本素养