[集群] 支持国标级联目录更新

This commit is contained in:
648540858
2025-01-03 15:34:53 +08:00
parent 3903bc31b5
commit 232fa760e2
6 changed files with 80 additions and 2 deletions

View File

@@ -6,6 +6,8 @@ import com.genersoft.iot.vmp.gb28181.bean.Platform;
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import java.util.List;
public interface IRedisRpcService {
SendRtpInfo getSendRtpItem(String callId);
@@ -30,4 +32,6 @@ public interface IRedisRpcService {
void subscribeMobilePosition(int id, int cycle, int interval);
boolean updatePlatform(String serverId, Platform platform);
void catalogEventPublish(String serverId, Integer platformId, List<Integer> channelIds, String type);
}

View File

@@ -6,7 +6,10 @@ import com.genersoft.iot.vmp.conf.redis.RedisRpcConfig;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcMessage;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcRequest;
import com.genersoft.iot.vmp.conf.redis.bean.RedisRpcResponse;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.gb28181.bean.Platform;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.service.IPlatformChannelService;
import com.genersoft.iot.vmp.gb28181.service.IPlatformService;
import com.genersoft.iot.vmp.service.redisMsg.dto.RedisRpcController;
import com.genersoft.iot.vmp.service.redisMsg.dto.RedisRpcMapping;
@@ -17,6 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
@Slf4j
@RedisRpcController("platform")
@@ -31,6 +37,12 @@ public class RedisRpcPlatformController extends RpcController {
@Autowired
private IPlatformService platformService;
@Autowired
private IPlatformChannelService platformChannelService;
@Autowired
private EventPublisher eventPublisher;
private void sendResponse(RedisRpcResponse response){
log.info("[redis-rpc] >> {}", response);
@@ -53,4 +65,28 @@ public class RedisRpcPlatformController extends RpcController {
return response;
}
/**
* 目录更新推送
*/
@RedisRpcMapping("catalogEventPublish")
public RedisRpcResponse catalogEventPublish(RedisRpcRequest request) {
JSONObject jsonObject = JSONObject.parseObject(request.getParam().toString());
int platformId = jsonObject.getIntValue("platformId");
Integer[] channelIds = jsonObject.getJSONArray("channelIds").toArray(Integer.class);
String type = jsonObject.getString("type");
RedisRpcResponse response = request.getResponse();
Platform platform = platformService.queryOne(platformId);
if (platform == null ) {
log.warn("[]");
response.setStatusCode(ErrorCode.ERROR400.getCode());
response.setBody(ErrorCode.ERROR400.getMsg());
return response;
}
List<CommonGBChannel> commonGBChannels = platformChannelService.queryChannelByPlatformIdAndChannelIds(platformId, Arrays.asList(channelIds));
eventPublisher.catalogEventPublish(platform, commonGBChannels, type);
response.setStatusCode(ErrorCode.SUCCESS.getCode());
return response;
}
}

View File

@@ -24,6 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class RedisRpcServiceImpl implements IRedisRpcService {
@@ -229,4 +231,14 @@ public class RedisRpcServiceImpl implements IRedisRpcService {
RedisRpcResponse response = redisRpcConfig.request(request, 40);
return Boolean.parseBoolean(response.getBody().toString());
}
@Override
public void catalogEventPublish(String serverId, Integer platformId, List<Integer> channelIds, String type) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("platformId", platformId);
jsonObject.put("channelIds", channelIds);
jsonObject.put("type", type);
RedisRpcRequest request = buildRequest("platform/catalogEventPublish", jsonObject);
redisRpcConfig.request(request, 100);
}
}