Pārlūkot izejas kodu

继电器失效修改

liubo 2 gadi atpakaļ
vecāks
revīzija
0c1ff163fd

+ 3 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/event/offline/KeepliveTimeoutListener.java

@@ -1,6 +1,7 @@
 package com.zd.alg.iot.vmp.gb28181.event.offline;
 
 import com.zd.alg.iot.vmp.gb28181.event.EventPublisher;
+import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +18,7 @@ import com.zd.alg.iot.vmp.common.VideoManagerConstants;
  * @date:   2020年5月6日 上午11:35:46
  */
 @Component
+@Slf4j
 public class KeepliveTimeoutListener extends KeyExpirationEventMessageListener {
 
     private Logger logger = LoggerFactory.getLogger(KeepliveTimeoutListener.class);
@@ -35,6 +37,7 @@ public class KeepliveTimeoutListener extends KeyExpirationEventMessageListener {
      */
     @Override
     public void onMessage(Message message, byte[] pattern) {
+
         //  获取失效的key
         String expiredKey = message.toString();
         if(!expiredKey.startsWith(VideoManagerConstants.KEEPLIVEKEY_PREFIX)){

+ 7 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisExpiredAndAddListener.java

@@ -2,9 +2,11 @@ package com.zd.laboratory.event;
 
 import cn.hutool.core.util.StrUtil;
 import com.zd.laboratory.event.handle.EventHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.connection.Message;
-import org.springframework.data.redis.connection.MessageListener;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
 import org.springframework.data.redis.listener.PatternTopic;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -30,7 +32,8 @@ import java.util.stream.Collectors;
  * @Description:
  */
 @Component
-public class RedisExpiredAndAddListener implements MessageListener {
+@Slf4j
+public class RedisExpiredAndAddListener extends KeyExpirationEventMessageListener {
 
     //监听的主题  现在只监听0号数据库
     private  final PatternTopic topic = new PatternTopic("__keyevent@0__:expired");
@@ -39,8 +42,9 @@ public class RedisExpiredAndAddListener implements MessageListener {
 
     private Map<String,EventHandler> map ;
 
-    public RedisExpiredAndAddListener(List<EventHandler> eventHandlers)
+    public RedisExpiredAndAddListener(List<EventHandler> eventHandlers, RedisMessageListenerContainer listenerContainer)
     {
+        super(listenerContainer);
         map = eventHandlers.stream().collect(Collectors.toMap(a -> a.handleKey(), Function.identity()));
     }
 

+ 0 - 48
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/RedisKeyExpirationListener.java

@@ -1,48 +0,0 @@
-package com.zd.laboratory.event;
-
-import cn.hutool.core.util.StrUtil;
-import com.zd.common.core.utils.SpringUtils;
-import com.zd.laboratory.mqtt.entiy.EquipmentStatus;
-import com.zd.model.constant.CacheDevice;
-import com.zd.model.enums.HardwareOperate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.data.redis.connection.Message;
-import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
-import org.springframework.data.redis.listener.RedisMessageListenerContainer;
-
-/**
- * 该方式会导致监听所有的库 所以没有使用
- * @Author: zhoupan
- * @Date: 2021/10/20/10:17
- */
-@Deprecated
-public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
-
-    private final static Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class);
-
-    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
-        super(listenerContainer);
-    }
-
-    @Override
-    public void onMessage(Message message, byte[] pattern) {
-        // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
-        String expiredKey = message.toString();
-        //继电器状态
-        if(expiredKey.startsWith(CacheDevice.RELAY_KEY.getRedisKey())){
-            //TODO 抛出事件
-            //得到 继电器编号
-
-            String s = StrUtil.subAfter(expiredKey, CacheDevice.RELAY_KEY.getRedisKey(), false);
-            logger.info("继电器离线:编号{}",s);
-            //创建离线对象
-            EquipmentStatus equipmentStatus = new EquipmentStatus();
-            equipmentStatus.setNum(s);
-            equipmentStatus.setHardwareOperate(HardwareOperate.OFFLINE);
-            //抛出继电器上下线切换事件
-            RelayHardwareStatusEvent relayHardwareStatusEvent = new RelayHardwareStatusEvent(equipmentStatus);
-            SpringUtils.getApplicationContext().publishEvent(relayHardwareStatusEvent);
-        }
-    }
-}