瀏覽代碼

新增 删除聊天室缓存

18339543638 3 年之前
父節點
當前提交
b41898394a

+ 6 - 0
nb-im/src/main/java/com/nb/im/job/ImRoomJob.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.nb.im.entity.ImRoomEntity;
 import com.nb.im.enums.ImStatusEnum;
 import com.nb.im.event.ImFinishedEvent;
+import com.nb.im.room.ImRoomOperatorManager;
 import com.nb.im.service.LocalImRoomService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +35,7 @@ import java.util.stream.Collectors;
 @Slf4j
 public class ImRoomJob {
     private final LocalImRoomService imRoomService;
+    private final ImRoomOperatorManager operatorManager;
     /**
      * 描述:每天凌晨2点计算自动结束聊天室时间
      * @author lifang
@@ -60,9 +62,13 @@ public class ImRoomJob {
                         .set(ImRoomEntity::getStatus, ImStatusEnum.AUTO_LIST)
                         .set(ImRoomEntity::getUpdateTime, now)
                 );
+
                 if(result){
                     rooms
                             .stream()
+                            .peek(room->{
+                                operatorManager.getRoomOperator(room.getId()).close();
+                            })
                             .map(room->
                                     new ImFinishedEvent(this,room.getAssistId(),room.getDoctorId(),room.getPatientId())
                             ).forEach(SpringUtil::publishEvent);

+ 9 - 5
nb-im/src/main/java/com/nb/im/room/ImRoomOperator.java

@@ -3,6 +3,9 @@ package com.nb.im.room;
 import com.nb.im.entity.ImRoomEntity;
 import lombok.Getter;
 import org.redisson.api.*;
+
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.*;
@@ -137,12 +140,13 @@ public class ImRoomOperator {
     }
 
     public void close(){
-        msgKeyFilter.deleteAsync();
-        atomicLong.deleteAsync();
+        atomicLong.expire(Duration.of(3, ChronoUnit.DAYS));
+        msgKeyFilter.expire(Duration.of(3, ChronoUnit.DAYS));
         unReadMap.forEach((k,bitSet)->{
-            if (bitSet.size()==0) {
-                bitSet.delete();
-            }
+            bitSet.expire(Duration.of(30, ChronoUnit.DAYS));
+//            if (bitSet.size()==0) {
+//                bitSet.delete();
+//            }
         });
     }