Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

@Component
//@Component // Redis 방식 비활성화
@RequiredArgsConstructor
public class ChatRedisPublisher {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;

@Component
//@Component // Redis 방식 비활성화
@RequiredArgsConstructor
public class ChatRedisSubscriber implements MessageListener {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

@Configuration
//@Configuration // Redis 방식 비활성화
@RequiredArgsConstructor
public class RedisPubSubConfig {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import java.security.Principal;
import java.util.Map;
import java.util.UUID;
import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
//import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
import likelion.mlb.backendProject.domain.chat.dto.ChatSendRequest;
import likelion.mlb.backendProject.domain.chat.repository.ChatMembershipRepository;
import lombok.RequiredArgsConstructor;
Expand All @@ -23,7 +23,7 @@ public class ChatMessagingController {
private final ChatMessageService chatMessageService;
private final SimpMessagingTemplate messagingTemplate;
private final ChatMembershipRepository membershipRepository;
private final ChatRedisPublisher chatRedisPublisher;
//private final ChatRedisPublisher chatRedisPublisher;


@MessageMapping("/chat/{roomId}/send")
Expand Down Expand Up @@ -55,7 +55,11 @@ public void send(@DestinationVariable UUID roomId,
"createdAt", saved.getCreatedAt().toString()
);


chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));
// Redis 대신 직접 WebSocket으로 전송 (즉시 전달)
String topic = "/topic/chat/" + roomId;
messagingTemplate.convertAndSend(topic, payload);

// Redis 방식 (주석처리 - 지연 발생)
//chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* */
import java.util.Map;
import java.util.UUID;
import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
//import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
import likelion.mlb.backendProject.domain.chat.service.ChatMessageService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
Expand All @@ -21,7 +21,7 @@ public class ChatNotificationController {


private final SimpMessagingTemplate messagingTemplate;
private final ChatRedisPublisher chatRedisPublisher;
//private final ChatRedisPublisher chatRedisPublisher; // Redis 방식 비활성화
private final ChatNotificationService notificationService;
private final ChatMessageService chatMessageService; // 디버그용

Expand All @@ -41,7 +41,7 @@ public ResponseEntity<Map<String, Object>> roomAlert(

var saved = chatMessageService.saveSystemAlert(roomId, text); // DB 저장

// ✅ STOMP 브로드캐스트 + Redis fan-out
// ✅ 직접 WebSocket으로 브로드캐스트 (즉시 전송)
Map<String, Object> payload = Map.of(
"id", saved.getId().toString(),
"chatRoomId", roomId.toString(),
Expand All @@ -50,7 +50,9 @@ public ResponseEntity<Map<String, Object>> roomAlert(
"createdAt", saved.getCreatedAt().toString()
);
messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload);
chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));

// Redis 방식 (주석처리 - 지연 발생)
//chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));

return ResponseEntity.ok(Map.of("ok", true, "id", saved.getId().toString()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import java.util.Map;
import java.util.UUID;

import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
//import likelion.mlb.backendProject.domain.chat.bus.ChatRedisPublisher;
import likelion.mlb.backendProject.domain.chat.entity.ChatMessage;
import likelion.mlb.backendProject.domain.chat.repository.AlertRoutingRepository;
import likelion.mlb.backendProject.domain.chat.repository.ChatMessageRepository;
Expand All @@ -28,7 +28,7 @@ public class ChatNotificationServiceImpl implements ChatNotificationService {
private final ChatMessageRepository chatMessageRepository;
private final ChatMessageService chatMessageService;
private final SimpMessagingTemplate messagingTemplate;
private final ChatRedisPublisher chatRedisPublisher;
//private final ChatRedisPublisher chatRedisPublisher; // Redis 방식 비활성화

/**
* LiveDataService에서 바로 호출 (현재 트랜잭션 커밋 후에 실행되도록 지연)
Expand Down Expand Up @@ -77,6 +77,7 @@ protected void doDispatch(UUID playerId,
// ✅ 서비스 경유 저장: AFTER_COMMIT 색인(ES)까지 자동 수행
var saved = chatMessageService.saveSystemAlert(roomId, msgText);

// ✅ 직접 WebSocket으로 전송 (즉시 전달)
var payload = Map.of(
"id", saved.getId().toString(),
"chatRoomId", roomId.toString(),
Expand All @@ -85,7 +86,9 @@ protected void doDispatch(UUID playerId,
"createdAt", saved.getCreatedAt().toString()
);
messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload);
chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));

// Redis 방식 (주석처리 - 지연 발생)
//chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload));
}
}

Expand Down
Loading