From 82ab6b1760b8787e31bed4020a0831c64fa05077 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期三, 10 八月 2022 18:14:33 +0800 Subject: [PATCH] 去除jedis,方便支持redis集群 --- /dev/null | 97 ------------------------ src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 3 src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java | 67 ++++------------ src/main/java/com/genersoft/iot/vmp/conf/RedisKeyExpirationEventMessageListener.java | 2 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 2 src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | 4 - pom.xml | 12 --- 7 files changed, 25 insertions(+), 162 deletions(-) diff --git a/pom.xml b/pom.xml index 41be567..2abd9d8 100644 --- a/pom.xml +++ b/pom.xml @@ -61,13 +61,6 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> - <exclusions> - <!-- 鍘绘帀 Lettuce 鐨勪緷璧栵紝 Spring Boot 浼樺厛浣跨敤 Lettuce 浣滀负 Redis 瀹㈡埛绔� --> - <exclusion> - <groupId>io.lettuce</groupId> - <artifactId>lettuce-core</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -92,11 +85,6 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> - </dependency> - - <dependency> - <groupId>redis.clients</groupId> - <artifactId>jedis</artifactId> </dependency> <!-- druid鏁版嵁搴撹繛鎺ユ睜 --> diff --git a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java index 6a862ae..d2e1347 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.conf; +import com.alibaba.fastjson.parser.ParserConfig; import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.service.impl.*; import org.apache.commons.lang3.StringUtils; @@ -9,15 +10,14 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.serializer.StringRedisSerializer; -import com.alibaba.fastjson.parser.ParserConfig; import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; + /** * @description:Redis涓棿浠堕厤缃被锛屼娇鐢╯pring-data-redis闆嗘垚锛岃嚜鍔ㄤ粠application.yml涓姞杞絩edis閰嶇疆 @@ -27,23 +27,6 @@ */ @Configuration public class RedisConfig extends CachingConfigurerSupport { - - @Value("${spring.redis.host}") - private String host; - @Value("${spring.redis.port}") - private int port; - @Value("${spring.redis.database}") - private int database; - @Value("${spring.redis.password}") - private String password; - @Value("${spring.redis.timeout}") - private int timeout; - @Value("${spring.redis.poolMaxTotal:1000}") - private int poolMaxTotal; - @Value("${spring.redis.poolMaxIdle:500}") - private int poolMaxIdle; - @Value("${spring.redis.poolMaxWait:5}") - private int poolMaxWait; @Autowired private RedisGpsMsgListener redisGPSMsgListener; @@ -61,36 +44,24 @@ private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener; @Bean - public JedisPool jedisPool() { - if (StringUtils.isBlank(password)) { - password = null; - } - JedisPoolConfig poolConfig = new JedisPoolConfig(); - poolConfig.setMaxIdle(poolMaxIdle); - poolConfig.setMaxTotal(poolMaxTotal); - // 绉掕浆姣 - poolConfig.setMaxWaitMillis(poolMaxWait * 1000L); - JedisPool jp = new JedisPool(poolConfig, host, port, timeout * 1000, password, database); - return jp; + public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); + // 浣跨敤fastJson搴忓垪鍖� + FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); + // value鍊肩殑搴忓垪鍖栭噰鐢╢astJsonRedisSerializer + redisTemplate.setValueSerializer(fastJsonRedisSerializer); + redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); + // 鍏ㄥ眬寮�鍚疉utoType锛屼笉寤鸿浣跨敤 + ParserConfig.getGlobalInstance().setAutoTypeSupport(true); + // 寤鸿浣跨敤杩欑鏂瑰紡锛屽皬鑼冨洿鎸囧畾鐧藉悕鍗曪紝闇�瑕佸簭鍒楀寲鐨勭被 +// ParserConfig.getGlobalInstance().addAccept("com.avatar"); + // key鐨勫簭鍒楀寲閲囩敤StringRedisSerializer + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setConnectionFactory(redisConnectionFactory); + return redisTemplate; } - @Bean("redisTemplate") - public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { - RedisTemplate<Object, Object> template = new RedisTemplate<>(); - template.setConnectionFactory(redisConnectionFactory); - // 浣跨敤fastjson杩涜搴忓垪鍖栧鐞嗭紝鎻愰珮瑙f瀽鏁堢巼 - FastJsonRedisSerializer<Object> serializer = new FastJsonRedisSerializer<Object>(Object.class); - // value鍊肩殑搴忓垪鍖栭噰鐢╢astJsonRedisSerializer - template.setValueSerializer(serializer); - template.setHashValueSerializer(serializer); - // key鐨勫簭鍒楀寲閲囩敤StringRedisSerializer - template.setKeySerializer(new StringRedisSerializer()); - template.setHashKeySerializer(new StringRedisSerializer()); - template.setConnectionFactory(redisConnectionFactory); - // 浣跨敤fastjson鏃堕渶璁剧疆姝ら」锛屽惁鍒欎細鎶ュ紓甯竛ot support type - ParserConfig.getGlobalInstance().setAutoTypeSupport(true); - return template; - } /** * redis娑堟伅鐩戝惉鍣ㄥ鍣� 鍙互娣诲姞澶氫釜鐩戝惉涓嶅悓璇濋鐨剅edis鐩戝惉鍣紝鍙渶瑕佹妸娑堟伅鐩戝惉鍣ㄥ拰鐩稿簲鐨勬秷鎭闃呭鐞嗗櫒缁戝畾锛岃娑堟伅鐩戝惉鍣� diff --git a/src/main/java/com/genersoft/iot/vmp/conf/RedisKeyExpirationEventMessageListener.java b/src/main/java/com/genersoft/iot/vmp/conf/RedisKeyExpirationEventMessageListener.java index 1848380..ef4a617 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/RedisKeyExpirationEventMessageListener.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/RedisKeyExpirationEventMessageListener.java @@ -28,7 +28,7 @@ RedisConnection connection = this.listenerContainer.getConnectionFactory().getConnection(); Properties config = connection.getConfig("notify-keyspace-events"); try { - if (!config.getProperty("notify-keyspace-events").equals(keyspaceNotificationsConfigParameter)) { + if (!keyspaceNotificationsConfigParameter.equals(config.getProperty("notify-keyspace-events"))) { connection.setConfig("notify-keyspace-events", keyspaceNotificationsConfigParameter); } } finally { diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 0dc6bd3..57ad192 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -445,12 +445,15 @@ if (streamInfo!=null){ redisCatchStorage.stopPlay(streamInfo); storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); + // 濡傛灉姝e湪缁欎笂绾ф帹閫侊紝鍒欏彂閫乥ye + }else{ streamInfo = redisCatchStorage.queryPlayback(null, null, stream, null); if (streamInfo != null) { redisCatchStorage.stopPlayback(streamInfo.getDeviceID(), streamInfo.getChannelId(), streamInfo.getStream(), null); } + // 濡傛灉姝e湪缁欎笂绾ф帹閫侊紝鍒欏彂閫乥ye } }else { if (!"rtp".equals(app)){ diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java index 5974918..aded98d 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -36,7 +36,6 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo; import com.genersoft.iot.vmp.storager.dao.MediaServerMapper; import com.genersoft.iot.vmp.utils.DateUtil; -import com.genersoft.iot.vmp.utils.redis.JedisUtil; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; @@ -90,9 +89,6 @@ @Autowired private EventPublisher publisher; - - @Autowired - JedisUtil jedisUtil; /** * 鍒濆鍖� diff --git a/src/main/java/com/genersoft/iot/vmp/utils/redis/JedisUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/redis/JedisUtil.java deleted file mode 100644 index 1fb1d17..0000000 --- a/src/main/java/com/genersoft/iot/vmp/utils/redis/JedisUtil.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.genersoft.iot.vmp.utils.redis; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; - -import java.util.Set; - -/** - * @description:Jedis宸ュ叿绫� - * @author: wangshaopeng@sunnybs.com - * @date: 2021骞�03鏈�22鏃� 涓嬪崍8:27:29 - */ -@Component -public class JedisUtil { - - @Autowired - private JedisPool jedisPool; - - // ============================== Key ============================== - - /** - * 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪銆� - * - * @param key - * @return - */ - public Boolean exists(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - Boolean exists = jedis.exists(key); - return exists; - } finally { - returnToPool(jedis); - } - } - - - // ============================== Set ============================== - - /** - * SADD key member [member ...] - * 灏嗕竴涓垨澶氫釜 member 鍏冪礌鍔犲叆鍒伴泦鍚� key 褰撲腑锛屽凡缁忓瓨鍦ㄤ簬闆嗗悎鐨� member 鍏冪礌灏嗚蹇界暐銆� - * 鍋囧 key 涓嶅瓨鍦紝鍒欏垱寤轰竴涓彧鍖呭惈 member 鍏冪礌浣滄垚鍛樼殑闆嗗悎銆� - * 褰� key 涓嶆槸闆嗗悎绫诲瀷鏃讹紝杩斿洖涓�涓敊璇�� - */ - public Long sadd(String key, String... members) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - Long smove = jedis.sadd(key, members); - return smove; - } finally { - returnToPool(jedis); - } - } - - /** - * SMEMBERS key - * 杩斿洖闆嗗悎 key 涓殑鎵�鏈夋垚鍛樸�� - * 涓嶅瓨鍦ㄧ殑 key 琚涓虹┖闆嗗悎銆� - */ - public Set<String> smembers(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - Set<String> smembers = jedis.smembers(key); - return smembers; - } finally { - returnToPool(jedis); - } - } - - - /** - * SREM key member1 [member2] - * 绉婚櫎闆嗗悎涓竴涓垨澶氫釜鎴愬憳 - */ - public Long srem(String key, String... member) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - Long srem = jedis.srem(key, member); - return srem; - } finally { - returnToPool(jedis); - } - } - - private void returnToPool(Jedis jedis) { - if (jedis != null) { - jedis.close(); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java index db7f8fd..cc6d416 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java @@ -148,6 +148,8 @@ // 瓒呮椂澶勭悊 result.onTimeout(()->{ logger.warn(String.format("璁惧棰勮/鍥炴斁鍋滄瓒呮椂锛宒eviceId/channelId锛�%s_%s ", deviceId, channelId)); + redisCatchStorage.stopPlay(streamInfo); + storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); RequestMessage msg = new RequestMessage(); msg.setId(uuid); msg.setKey(key); -- Gitblit v1.8.0