jiang
2022-08-18 8f77d0c25cdd37d4cc96c923b46ae28607bae51d
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -277,13 +277,7 @@
            return null;
        }
        String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
        MediaServerItem serverItem=(MediaServerItem)redisUtil.get(key);
        if(null==serverItem){
            //zlm服务不在线,启动重连
            reloadZlm();
            serverItem=(MediaServerItem)redisUtil.get(key);
        }
        return serverItem;
        return (MediaServerItem)redisUtil.get(key);
    }
    @Override
@@ -412,7 +406,6 @@
        }
        redisUtil.set(key, serverItem);
        resetOnlineServerItem(serverItem);
        updateMediaServerKeepalive(serverItem.getId(), null);
        if (serverItem.isAutoConfig()) {
            setZLMConfig(serverItem, "0".equals(zlmServerConfig.getHookEnable()));
        }
@@ -476,9 +469,6 @@
        String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
        if (redisUtil.zSize(key)  == null || redisUtil.zSize(key) == 0) {
            logger.info("获取负载最低的节点时无在线节点,启动重连机制");
            //启动重连
            reloadZlm();
            if (redisUtil.zSize(key)  == null || redisUtil.zSize(key) == 0) {
                logger.info("获取负载最低的节点时无在线节点");
                return null;
@@ -643,6 +633,11 @@
    public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) {
        MediaServerItem mediaServerItem = getOne(mediaServerId);
        if (mediaServerItem == null) {
            // 缓存不存在,从数据库查询,如果数据库不存在则是错误的
            MediaServerItem mediaServerItemFromDatabase = getOneFromDatabase(mediaServerId);
            if (mediaServerItemFromDatabase == null) {
                return;
            }
            // zlm连接重试
            logger.warn("[更新ZLM 保活信息]失败,未找到流媒体信息,尝试重连zlm");
            reloadZlm();
@@ -658,6 +653,10 @@
        redisUtil.set(key, data, hookAliveInterval);
    }
    private MediaServerItem getOneFromDatabase(String mediaServerId) {
        return mediaServerMapper.queryOne(mediaServerId);
    }
    @Override
    public void syncCatchFromDatabase() {
        List<MediaServerItem> allInCatch = getAll();