性能优化二(设备指令下发)
为什么这个叫性能优化二?因为之前有做过一次优化了,并且遇到了一些坑
对应的地址是
[SpringBoot AMQP线程池的坑, 坑三](https://www.cnblogs.com/lesenlin/p/15072960.html)
业务问题:反馈设备指令下发(如:开门指令)到设备需要等待20S,设备才开门
比如 上午10.20.00用户在APP上点击开门,但是10.20.25 设备才开门,排查日志确实是10.20.25下发的数据
这个项目我刚接手,对于代码来说,基本上一点都不熟悉,但是不熟悉也没办法,干吧
原设备消费详细流转图:

补充,下发指令用到了rabbitMQ的消息的最高优先级
可以看出来导致下发需要20S的原因是因为他是消费数据之后同步等待了返回然后进行自动ACK的,在设备量大的情况下,指令只在单队列高优先级是没办法保证及时消费的,因为订阅的是所有在线设备的队列
第一期优化,监听队列从原来的10线程 * 4台服务器 修改为60线程 * 4台服务器 2021.07.30 已完成
第二期优化,同步阻塞等待改成异步ACK,保存通道列表缓存
重构之后设备消费详细流转图:

可以看出来,进行重构之后,异步可以处理所有设备队列指令
浙公网安备 33010602011771号