Skip to content

Commit

Permalink
[feat] #173 컨슈머 재생성 로직 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
dyk-im committed Feb 5, 2025
1 parent fa44097 commit 5981b7b
Showing 1 changed file with 16 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

Expand All @@ -21,9 +22,13 @@
import org.springframework.stereotype.Service;

import com.example.eatmate.app.domain.chat.dto.request.ChatMessageRequestDto;
import com.example.eatmate.app.domain.chatRoom.domain.ChatRoom;
import com.example.eatmate.app.domain.chatRoom.domain.DeletedStatus;
import com.example.eatmate.app.domain.chatRoom.domain.repository.ChatRoomRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.rabbitmq.client.Channel;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -38,6 +43,7 @@ public class QueueManager {
private final SimpMessagingTemplate messagingTemplate;
private final ObjectMapper objectMapper = new ObjectMapper();
private final Map<Long, SimpleMessageListenerContainer> activeListeners = new ConcurrentHashMap<>();
private final ChatRoomRepository chatRoomRepository;
@Value("${rabbitmq.queue-prefix}")
private String queuePrefix;
@Value("${rabbitmq.binding-key-prefix}")
Expand Down Expand Up @@ -113,6 +119,16 @@ public void stopChatRoomListener(Long chatRoomId) {
}
}

//서버 다운 이후 복구했을 경우 채팅방의 컨슈머 복구
@PostConstruct
public void restoreChatRoomListeners() {
List<ChatRoom> activeChatRoom = chatRoomRepository.findAllByDeletedStatus(DeletedStatus.NOT_DELETED); // DB에서 활성화된 채팅방 ID 조회
for (ChatRoom chatRoom : activeChatRoom) {
startChatRoomListener(chatRoom.getId()); // 리스너 다시 시작
}
log.info("Restored {} chat room listeners from DB", activeChatRoom.size());
}

@PreDestroy
public void cleanup() {
activeListeners.values().forEach(SimpleMessageListenerContainer::stop);
Expand Down

0 comments on commit 5981b7b

Please sign in to comment.