定時任務掃描,在數據量大時,會非常耗時,可以用延時隊列實現一個定時任務
~~~
// 訂閱延時消息
@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 {
業務...
}
}
}
}
~~~