Commit b019106c449cdb64b125aa2a913e7f8037c8d85d

Authored by 648540858
Committed by GitHub
2 parents 2eb1ca2d af885ca4

Merge pull request #365 from TristingChen/zlm-node-manage

fixed--多节点管理zlm,wvp重启之后节点中的redis在线状态bug修复
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -92,6 +92,7 @@ public class ZLMRunner implements CommandLineRunner { @@ -92,6 +92,7 @@ public class ZLMRunner implements CommandLineRunner {
92 92
93 // 获取所有的zlm, 并开启主动连接 93 // 获取所有的zlm, 并开启主动连接
94 List<MediaServerItem> all = mediaServerService.getAllFromDatabase(); 94 List<MediaServerItem> all = mediaServerService.getAllFromDatabase();
  95 + mediaServerService.updateVmServer(all);
95 if (all.size() == 0) { 96 if (all.size() == 0) {
96 all.add(mediaConfig.getMediaSerItem()); 97 all.add(mediaConfig.getMediaSerItem());
97 } 98 }
src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
@@ -42,6 +42,8 @@ public interface IMediaServerService { @@ -42,6 +42,8 @@ public interface IMediaServerService {
42 42
43 void setZLMConfig(MediaServerItem mediaServerItem, boolean restart); 43 void setZLMConfig(MediaServerItem mediaServerItem, boolean restart);
44 44
  45 + void updateVmServer(List<MediaServerItem> mediaServerItemList);
  46 +
45 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId); 47 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId);
46 48
47 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback); 49 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback);
@@ -74,6 +76,8 @@ public interface IMediaServerService { @@ -74,6 +76,8 @@ public interface IMediaServerService {
74 76
75 void delete(String id); 77 void delete(String id);
76 78
  79 + void deleteDb(String id);
  80 +
77 MediaServerItem getDefaultMediaServer(); 81 MediaServerItem getDefaultMediaServer();
78 82
79 void updateMediaServerKeepalive(String mediaServerId, JSONObject data); 83 void updateMediaServerKeepalive(String mediaServerId, JSONObject data);
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -46,8 +46,7 @@ import java.util.*; @@ -46,8 +46,7 @@ import java.util.*;
46 * 媒体服务器节点管理 46 * 媒体服务器节点管理
47 */ 47 */
48 @Service 48 @Service
49 -@Order(value=2)  
50 -public class MediaServerServiceImpl implements IMediaServerService, CommandLineRunner { 49 +public class MediaServerServiceImpl implements IMediaServerService {
51 50
52 private final static Logger logger = LoggerFactory.getLogger(MediaServerServiceImpl.class); 51 private final static Logger logger = LoggerFactory.getLogger(MediaServerServiceImpl.class);
53 52
@@ -102,9 +101,8 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR @@ -102,9 +101,8 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
102 * 初始化 101 * 初始化
103 */ 102 */
104 @Override 103 @Override
105 - public void run(String... args) throws Exception { 104 + public void updateVmServer(List<MediaServerItem> mediaServerItemList) {
106 logger.info("[缓存初始化] Media Server "); 105 logger.info("[缓存初始化] Media Server ");
107 - List<MediaServerItem> mediaServerItemList = mediaServerMapper.queryAll();  
108 for (MediaServerItem mediaServerItem : mediaServerItemList) { 106 for (MediaServerItem mediaServerItem : mediaServerItemList) {
109 if (StringUtils.isEmpty(mediaServerItem.getId())) { 107 if (StringUtils.isEmpty(mediaServerItem.getId())) {
110 continue; 108 continue;
@@ -225,7 +223,8 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR @@ -225,7 +223,8 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
225 String key = (String) mediaServerKey; 223 String key = (String) mediaServerKey;
226 MediaServerItem mediaServerItem = (MediaServerItem) redisUtil.get(key); 224 MediaServerItem mediaServerItem = (MediaServerItem) redisUtil.get(key);
227 // 检查状态 225 // 检查状态
228 - if (redisUtil.zScore(onlineKey, mediaServerItem.getId()) != null) { 226 + Double aDouble = redisUtil.zScore(onlineKey, mediaServerItem.getId());
  227 + if (aDouble != null) {
229 mediaServerItem.setStatus(true); 228 mediaServerItem.setStatus(true);
230 } 229 }
231 result.add(mediaServerItem); 230 result.add(mediaServerItem);
@@ -610,6 +609,11 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR @@ -610,6 +609,11 @@ public class MediaServerServiceImpl implements IMediaServerService, CommandLineR
610 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id; 609 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetup.getServerId() + "_" + id;
611 redisUtil.del(key); 610 redisUtil.del(key);
612 } 611 }
  612 + @Override
  613 + public void deleteDb(String id){
  614 + //同步删除数据库中的数据
  615 + mediaServerMapper.delOne(id);
  616 + }
613 617
614 @Override 618 @Override
615 public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) { 619 public void updateMediaServerKeepalive(String mediaServerId, JSONObject data) {
src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -158,6 +158,7 @@ public class ServerController { @@ -158,6 +158,7 @@ public class ServerController {
158 public WVPResult<String> deleteMediaServer(@RequestParam String id){ 158 public WVPResult<String> deleteMediaServer(@RequestParam String id){
159 if (mediaServerService.getOne(id) != null) { 159 if (mediaServerService.getOne(id) != null) {
160 mediaServerService.delete(id); 160 mediaServerService.delete(id);
  161 + mediaServerService.deleteDb(id);
161 }else { 162 }else {
162 WVPResult<String> result = new WVPResult<>(); 163 WVPResult<String> result = new WVPResult<>();
163 result.setCode(-1); 164 result.setCode(-1);