定时任务扫描,在数据量大时,会非常耗时,可以用延时队列实现一个定时任务
~~~
// 订阅延时消息
@RabbitListener(queues = {VncMqInfoConst.VNC_QUENE_ONLINE_DELY})
public void deviceOnlineCheck(CarOnlineVo carOnlineVo) {
if (Objects.nonNull(carOnlineVo)) {
log.info("收到: 设备在线检查消息:{}", carOnlineVo.toString());
....
// ***** 循环结束控制,redis里边一个变量 ******
if (redisTemplate.hasKey(DeviceRedisPrefixConst.DEVICE_ONLINE_PREFIX + carOnlineVo.getDevId())) {
// *******发送延时消息,相当于有一次循环******
mqProducerUtil.sendDelyMessage(VncMqInfoConst.VNC_EXCHANGE_DELY, VncMqInfoConst.VNC_ROUTE_KEY_ONLINE_DELY, carOnlineVo, 60);
} else {
业务...
}
}
}
}
~~~