增加收到notify增加或移除通道时发送redis消息
| | |
| | | } |
| | | }else { |
| | | addChannelMap.put(channel.getChannelId(), channel); |
| | | if (userSetting.getDeviceStatusNotify()) { |
| | | // 发送redis消息 |
| | | redisCatchStorage.sendChannelAddOrDelete(device.getDeviceId(), channel.getChannelId(), true); |
| | | } |
| | | |
| | | if (addChannelMap.keySet().size() > 300) { |
| | | executeSaveForAdd(); |
| | | } |
| | |
| | | // 删除 |
| | | logger.info("[收到删除通道通知] 来自设备: {}, 通道 {}", device.getDeviceId(), channel.getChannelId()); |
| | | deleteChannelList.add(channel); |
| | | if (userSetting.getDeviceStatusNotify()) { |
| | | // 发送redis消息 |
| | | redisCatchStorage.sendChannelAddOrDelete(device.getDeviceId(), channel.getChannelId(), false); |
| | | } |
| | | if (deleteChannelList.size() > 300) { |
| | | executeSaveForDelete(); |
| | | } |
| | |
| | | if (addChannelMap.keySet().size() > 300) { |
| | | executeSaveForAdd(); |
| | | } |
| | | if (userSetting.getDeviceStatusNotify()) { |
| | | // 发送redis消息 |
| | | redisCatchStorage.sendChannelAddOrDelete(device.getDeviceId(), channel.getChannelId(), true); |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | |
| | | void removeAllDevice(); |
| | | |
| | | void sendDeviceOrChannelStatus(String deviceId, String channelId, boolean online); |
| | | void sendChannelAddOrDelete(String deviceId, String channelId, boolean add); |
| | | } |
| | |
| | | // 使用 RedisTemplate<Object, Object> 发送字符串消息会导致发送的消息多带了双引号 |
| | | stringRedisTemplate.convertAndSend(key, msg.toString()); |
| | | } |
| | | |
| | | @Override |
| | | public void sendChannelAddOrDelete(String deviceId, String channelId, boolean add) { |
| | | String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_DEVICE_STATUS; |
| | | logger.info("[redis通知] 推送通道{}, {}/{}", add?"增加":"移除", deviceId, channelId); |
| | | |
| | | StringBuilder msg = new StringBuilder(); |
| | | msg.append(deviceId); |
| | | if (channelId != null) { |
| | | msg.append(":").append(channelId); |
| | | } |
| | | msg.append(" ").append(add? "ADD":"DELETE"); |
| | | // 使用 RedisTemplate<Object, Object> 发送字符串消息会导致发送的消息多带了双引号 |
| | | stringRedisTemplate.convertAndSend(key, msg.toString()); |
| | | } |
| | | } |